文章来源为noraml matloff教授写的Major Componets of Computer "Engine",文章有点老,意义还是有的:-)

History of Intel CPU Structure

The earliest widely-used Intel processor chip was the 8080. Its word size was 8 bits, and it included registers
named A, B, C and D (and a couple of others). Address size was 16 bits.
The next series of Intel chips, the 8086/8088,and then the 80286, featured 16-bit words and 20-bit addresses.
The A, B, C and D registers were accordingly extended to 16-bit size and renamed AX, BX, CX
and DX (‘X’ stood for “extended”). Other miscellaneous registers were added. The lower byte of AX was
called AL, the higher byte AH, and similarly for BL, BH, etc.
      
        最早被广泛应用的Intel处理器是8080.它的字长为8,包括A,B,C,D(还有一些其他的)寄存器,地址长度为16位。接下来的Intel芯片是8086/8080,然后是80286,拥有16位的字长和20位的地址长度。A,B,C,D寄存器也相应的扩展到16位长,并被命名为AX,BX,CX,DX('X'代表"扩展的")。一些各种功能的寄存器也增加了。AX的低位被称作AL,高位作为AH,BL,BH等也一样。

Beginning with the 80386 and extending to the Pentium series, both word and address size has been 32 bits.
The registers were again extended in size, to 32 bits, and renamed EAX, EBX and so on (‘E’ for “extended”).
The pre-32-bit Intel CPUs, starting with 8086/8088, replaced the single register PC with a pair of registers,
CS (for code segment) and IP (for instruction pointer). A rough description is that the CS register pointed to
the code segment, which is the place in memory where the program’s instructions start, and the IP register
then specified the distance in bytes from that starting point to the current instruction. Thus by combining
the information given in c(CS) and c(IP), we obtained the absolute address of the current instruction.

从80386开始到奔腾系列,字长和地址长度都变成了32位,寄存器也再次扩展到32位,并被称为EAX,EBX('E'代表"扩展的")。在32位之前的Intel CPU,从8086/8088开始,把单个PC寄存器用一对寄存器取代,CS(代码段)和IP(指令指针)。一个粗糙的描述就是CS寄存器指向代码段,也就是内存中程序指令开始执行的地方,IP寄存器接着指定用字节表示的从当前指令到起始点的距离。这样通过两者结合,我们可以得到当前指令的绝对地址。

This is still true today when an Intel CPU runs in in 16-bit mode, in which case it generates 20-bit addresses.
The CS register is only 16 bits, but it represents a 20-bit address whose least significant four bits are implicitly
0s. (This implies that code segments are allowed to begin only at addresses which are multiples of 16.)
The CPU generates the address of the current instruction by concatenating c(CS) with four 0 bits and then
adding the result to c(IP).

这在今天看来也仍是正确的,如果Intel CPU运行在16位模式,在这种情况下,它产生20位的地址。CS寄存器只有十六位,但它确表示二十位的地址,这就暗示地址的最低4位为'0'。(这表示代码段只能在16的倍数的地址上开始)。CPU通过在CS上添加4个'0'位再加上IP的值来取得当前的指令地址。

Suppose for example the current instruction is located at 0x21082, and the code segment begins at 0x21040.
Then c(CS) and c(IP) will be 0x2104 and 0x0042, respectively, and when the instruction is to be executed,
its address will be generated by combining these two values as shown above.

假设当前的指令地位为0x21082,代码段从0x21040开始,那么CS和IP就应该分别为0x2104和0x0042。当指令被执行时,它的地址就上面的两个值相加得到。

The situation is similar for stacks and data. For example, instead of having a single SP register as in our
model of a typical CPU above, the earlier Intel CPUs (and current CPUs when they are running in 16-bit
mode) use a pair of registers, SS and SP. SS specifies the start of the stack segment, and SP contains the
distance from there to the current top-of-stack. For data, the DS register points to the start of the data
segment, and a 16-bit value contained in the instruction specifies the distance from there to the desired data
item.

栈和数据的情况也类似。例如,早期的Intel CPUs(和运行在16位模式的现在的CPUs)使用一对寄存器,SS和SP,而不是向上面典型的CPU那样只用单个的SP寄存器。SS指定栈段的开始,SP包含从那里到栈顶的距离。对于数据来说,DS寄存器指向数据段的开始,指令中的一个16位的值指定到需要的数据项的距离。

Since IP, SP and the data-item distance specified within an instruction are all 16-bit quantities, it follows
that the code, stack and data segments are limited to 216= 65, 536 bytes in size. This can make things quite
inconvenient for the programmer. If, for instance, we have an array of length, say, 100,000 bytes, we could
not fit the array into one data segment. We would need two such segments, and the programmer would have
to include in the program lines of code which change the value of c(DS) whenever it needs to access a part
of the array in the other data segment.

由于IP,SP以及指令中指定的数据的距离都是16位的值,这就使得代码段,栈段和数据段的长度都被限制在216= 65,536位。这样对程序员来说很不方便。比如,如果我们有个数组的长度为,假如100,000byte,我们就不能把它放入一个数据段中。我们需要两个这样的段,而且当程序员需要访问在另一个段中的数组时,需要在代码行中放入改变DS值的代码。

These problems are avoided by the newer operating systems which run on Intel machines today, such as
Windows and Linux, since they run in 32-bit mode. Addresses are also of size 32 bits in that mode, and IP,
SP and data-item distance are 32 bits as well. Thus a code segment, for instance, can fill all of memory, and
segment switching as illustrated above is unnecessary.

今天这些问题被运行在Intel机器上的新的操作系统避免了,例如Windows和Linux,由于他们运行在32位模式。这种模式下地址也是32位的,IP,SP和数据距离也同样。这样一个代码段可以填满整个内存,而且像上面那样的段切换也不再需要了。

发现这一段的意思不是太大,不过还是坚持翻完了
时间也花了一个多小时,还是看快。

转载于:https://www.cnblogs.com/denovo/archive/2006/08/21/482724.html

翻译:Intel CPU架构的历史相关推荐

  1. intel cpu 漏洞 linux,Intel CPU架构漏洞越捅越大:打补丁将损失30%性能

    还记得前不久那个被曝光影响大面积Intel Core CPU产品的安全漏洞吗?这貌似只是冰山一角,就在今天人们发现了Intel处理器里一个更为致命的漏洞,从最底端的Pentium,到最新的Coffee ...

  2. Intel CPU架构处理器漏洞越捅越大 打补丁将损失30%性能

    还记得前不久那个被曝光影响大面积Intel Core CPU产品的安全漏洞吗?这貌似只是冰山一角,就在今天人们发现了Intel处理器里一个更为致命的漏洞,从最底端的Pentium,到最新的Coffee ...

  3. intel cpu架构与平台

    http://www.learsun.com/Article/purleypt/lextsytezx.html http://www.expreview.com/49967-2.html

  4. TCP 与 CPU 架构发展史

    周五下班前跟同事聊了几句,还是关于 TCP 协议的. 诞生于 1970s 的 TCP 协议,在 1981 年作为 TCP/IPv4 被标准化,其实质直到今天都没有发生改变,按序,可靠,其间有过一些涉及 ...

  5. Intel系列CPU架构的发展史

    Intel系列CPU架构的发展史 CPU(Central processing Unit),又称"微处理器(Microprocessor)",是现代计算机的核心部件.对于PC而言, ...

  6. 图解CPU生产全过程——以intel CORE i7为例,展望CPU架构

    科学Sciences导读:图解CPU生产全过程--以intel CORE i7为例,展望CPU架构.本文简介英特尔Intel x86架构.生产制造CPU的原料和准备.CPU生产制造过程,并展望CPU的 ...

  7. CPU架构之intel itanium

    FROM:http://zh.wikipedia.org/wiki/Itanium Itanium 维基百科,自由的百科全书 汉漢▼ 建议合并IA-64到本条目或章节.(讨论) Itanium 2 I ...

  8. bad cpu type in executable_【简讯】Intel将每5年重新开发一次CPU架构;华为EMUI 11曝光…...

    Intel将每5年重新开发一次CPU架构 日前,Intel TSCG高级副总裁.硅工程总经理.CPU大牛Jim Keller在视频采访中谈到了CPU研发的问题,之前Intel虽然有过Tick-Tock ...

  9. 【服务器开发必备知识总结】:BMC开发、raid卡、HBA卡、HDD硬盘、SSD硬盘、ME、cpld、服务器路数、U数介绍、intel cpu 平台架构介绍

    文章目录 bmc 内存泄露的详细定位方法 服务器HBA卡介绍 服务器raid卡介绍 服务器HBA卡和RAID卡区别与联系是什么? 服务器HDD硬盘与SSD硬盘介绍 服务器硬盘模式AHCI啥意思? 服务 ...

最新文章

  1. 修改服务器里的端口,怎么修改windows服务器登陆端口号
  2. Nginx-03:Nginx安装、命令、配置文件
  3. 神经网络参数迁移与惯性质量
  4. python-3.x-基本数据类型
  5. SAP后台作业记录操作
  6. Mac 删除应用卸载后无法正常移除的图标
  7. Fortran 入门——函数调用
  8. 一晚啪了5只喵,累到在医院打点滴,这中国喵把英国人看傻了 | 今日最佳
  9. python vector_50行Python代码实现经典游戏,不仅是划水神器,更是学习利器!
  10. http header 设置编码_【译】http.client
  11. n-1 java_【Java】 剑指offer(53-2) 0到n-1中缺失的数字
  12. 从0到1打造推荐系统-架构篇
  13. 离职10天,面了4家公司,我的感受...
  14. oracle 游标取字段名称,Oracle使用游标查询指定数据表的所有字段名称组合而成的字符串...
  15. was控制台的用户和密码怎样加密使用_交换机密码忘记了,怎么办,密码恢复一分钟了解下...
  16. 计算机组成原理唐朔飞重点,计算机组成原理唐朔飞高分笔记
  17. 轮询小案例-扫码登录
  18. html5音乐播放器网页底部,jQuery+html5网页底部固定mp3音乐播放器代码
  19. AIMD response function的一般推导
  20. 网传固态硬盘因为TRIM指令一经删除无法恢复是以讹传讹

热门文章

  1. 使用Java客户端操作elasticsearch--设置mappings、添加文档、查询数据
  2. AOP面向切面编程相关术语介绍
  3. php程序员必会的,PHP程序员必会的MySQL面试题
  4. div中内容靠右_python读取excel的公司名称信息,并爬虫获取公司的经营范围信息,回填到excel中...
  5. 引流虚拟主机和服务器,建站使用云服务器和虚拟主机 哪个更好?
  6. VS Code设置代码片段(C++)
  7. Qt for ios 无证书真机调试
  8. 如何在一个.c文件里调用另一个.c文件里的变量
  9. html 弹窗被拦截,window.open()弹窗被浏览器拦截的解决方法
  10. centos 日志切割_centos自带的日志切割工具 --- logrotate