开yun体育app官网网页登录入口 微型计算机技术 第二章

发布于:25-07-29 播放次数:

第2章微处理器结构

2.1微处理器的发展历史

2.2微处理器的功能结构

习题2

2.1微处理器的发展历史

2.1.1微处理器的发展

随着集成电路制造技术和计算机科技的进步,在20世纪60年代末期至70年代初期,便携式计算机开始广泛投入使用。为了开发出适应性强的计算机芯片,1971年10月,美国英特尔公司率先推出了Intel 4004型微处理器。这是一款能够进行四路并行计算的单片式处理器,其运算单元与控制单元的所有部件均被整合在一块大规模集成电路芯片之中,堪称首枚微处理器。

自1971年首块微处理器问世以来,经过了超过三十载的时光,微处理器技术已迈过四个发展阶段。

1971年标志着第一代微处理器的诞生,那时主要分为4位和低档8位两大类。在这一时期,涌现出了不少经典产品,例如1971年10月问世的Intel4004,这是一款4位微处理器;紧接着在1972年3月,Intel8008也加入了行列,它是一款8位微处理器,其集成度达到了2000管/片,采用的是PMOS工艺,并且采用了10μm的光刻技术。

自1973年起,我们进入了8位微处理器的时代。这一时期涌现出了众多标志性产品,如:1973年,英特尔推出了8080型8位微处理器;紧接着在1974年3月,摩托罗拉推出了MC6800;而在1975至1976年间,Zilog公司推出了Z80;同年,英特尔还推出了8085型微处理器。Intel 8080的芯片集成了5400个晶体管,采用了NMOS工艺技术,并运用了6微米的先进光刻工艺。

自1978年起,进入了16位微处理器的时代。这一时期涌现出了众多经典产品,例如:1978年,英特尔推出了8086处理器;1979年,Zilog公司推出了Z8000处理器;同年,摩托罗拉公司推出了MC68000处理器,该处理器集成了68000个晶体管,采用了HMOS工艺,并采用了3μm的光刻技术。

第四代,1981年开始,是32位微处理器的时期。1983年,Zilog公司推出了Z80000系列;翌年,Motorola公司发布了MC68020处理器,其集成度高达17万晶体管/芯片,采用CHMOS工艺制造,并运用了2μm的光刻技术;再往后,1985年,Intel公司推出了80386处理器,其集成度进一步上升至27.5万晶体管/芯片,同样采用CHMOS工艺,并采用了1.2μm的光刻技术。

自Intel80386芯片问世之后,陆续涌现了众多性能卓越的32位和64位微处理器,其中包括Motorola的MC68030和MC68040,AMD公司的K6-2、K6-3、K7,以及Intel的80486、Pentium、PentiumⅡ、PentiumⅢ和Pentium4等型号。

2.1.2Intel8086微处理器

美国Intel公司于1978年推出了名为8086的高性能16位微处理器,该处理器运用硅栅HMOS工艺技术制造,单个硅片面积仅为1.45平方厘米,却集成了29000个晶体管。自问世以来,8086微处理器展现出旺盛的生命力,基于其构建的微机系统,性能已足以媲美中高档小型计算机。它配备了繁多的指令集,运用了多级中断处理机制、多样化的寻址模式、多元的数据处理方法、分段式的存储器架构以及集成的硬件乘除运算单元,并增设了预取指令的队列寄存器,从而显著提升了其性能。尽管与其它几种16位微处理器相比,8086的内部结构规模相对较小,但它依旧采用了40脚的双列直插式封装设计。8086处理器的一大优势在于其强大的多任务处理能力。通过将8086CPU与8087协处理器以及8089I/O处理器结合,构建成一个多处理器系统,可以显著增强数据处理和输入/输出性能。此外,与8086相配套的外围接口芯片种类繁多,这极大地便利了用户在开发各类系统时的需求。

2.1.3Intel80386微处理器

在1985年,Intel公司推出了首款32位微处理器80386DX,这一产品对8086至80286系列微处理器进行了全面升级。该处理器具备32位的数据总线和内存地址,其寻址能力可达4GB。紧接着,1988年,Intel又推出了80386SX型号,其外部总线为16位,寻址空间限制在16MB,并配备了16位的数据总线和24位的地址总线。80386系列中存在一些变体,例如80386SL和80386SLC。这些变体的寻址能力达到了16MB,配备了16位的数据总线以及25位的地址总线。特别值得一提的是,80386SLC还额外配备了一个内部的高速缓冲存储器,这一设计旨在提升数据的处理速度。1995年,Intel公司推出了名为80386EX的产品,亦称作嵌入式PC。该产品集成了AT类PC的所有组件,具备24根输入/输出数据线,26位的地址总线,16位的数据总线,并配备了一个DRAM刷新控制器。此外,它还拥有可编程的芯片选择逻辑。

80386的指令集与早期的8086、8088、80286的指令集保持了向下兼容性,新增的指令涵盖了32位寄存器操作,并且能够对内存系统进行有效管理。

2.1.4Intel80486微处理器

Intel公司在1989年推出了80486这款微处理器,该产品与80386完全兼容,同时具备更强大的功能。为了提升微处理器的性能,它引入了多项新技术。对80386的核心硬件进行了优化,引入了RISC技术以提升指令的执行效率;强化了总线接口部件,提升了CPU从主存中读取和写入信息的能力;并将浮点运算协处理器、高速缓存及其控制器部件整合至主处理器芯片之中,从而加快了信息的传输与处理效率。上述功能的诸多优化,显著提升了80486微处理器的性能,其速度甚至比配备80387浮点运算协处理器的80386DX微处理器快出近四倍。

在Intel80486微处理器系列中,拥有不同档次的产品:

Intel 80486DX,作为Intel 80486微处理器家族的先驱,继承了该系列架构的所有基础特性。该芯片不仅包含了核心的CPU组件,还整合了浮点运算协处理器、8KB的高速缓存存储器以及缓存控制单元。

Intel 80486SX芯片属于80486系列,是一款价格较低的微处理器,其内部结构与80486DX相似,但缺少了浮点运算协处理器,并且外部数据总线的引脚仅为16位。

在Intel80486微处理器系列中,拥有不同档次的产品:

(1)Intel80486DX。它是Intel80486微处理器系列的一个最初成员,具有80486微处理器体系结构的各种基本特点。该芯片除包含CPU部件外,还集成了一个浮点运算协处理器部件、一个8KB的高速缓冲存储器部件及高速缓存控制器部件。

(2)Intel80486SX。它是80486系列的一个低价格微处理器芯片,内部结构与80486DX基本相同,但不包含浮点运算协处理器部件,外部数据总线引脚也只有16位。

Intel 80486DX2芯片是一款升级版的80486处理器,其内部构造与80486DX保持一致。不过,它引入了单倍频时钟技术,这一技术使得微处理器能够以外部时钟振荡器的频率进行工作,而非之前采用的分频速度。这一创新使得80486DX2的运行频率相较于80486DX有了显著提升,几乎翻了一番。

Intel 80486DX4,这款芯片同样属于增强型80486系列。它不仅运行速度达到了80486DX的四倍,而且配备了更大的片内高速缓存(16KB),同时,其工作电压也得以降至3.3V。通过这种方式,80486的处理速度得到了显著提升,缓存命中率显著提高,CPU与内存之间的数据交换速度加快,同时芯片的能耗也得到了大幅减少。

2.1.5 Intel 奔腾(Pentium)微处理器

Intel公司在1993年推出了Pentium微处理器,这是80x86系列微处理器的第五代产品。相较于上一代产品,其性能有了显著提升。尽管如此,它依然与8086、80286、80386、80486保持了兼容性。Pentium微处理器的芯片尺寸相较于80486芯片有了显著增长,它不仅包含了基础的CPU电路,还整合了16 KB的高速缓存和浮点运算辅助器,整体集成度达到了310万个晶体管。芯片的引脚数量增至超过270个,其中,外部数据总线宽度达到了64位,使得在单个总线周期内传输的数据量是80486的两倍;而地址总线宽度为36位,这使得可访问的物理地址空间达到了64GB。

Pentium微处理器在运算速度和性能方面超越了80486。其工作频率范围在66至200 MHz之间。以66 MHz为例,指令的平均执行速度可达112MIPS。与同频率的80486相比,Pentium在整数运算上的性能提升了整整一倍,而在浮点运算上的性能则提高了近四倍。整数运算和浮点运算的指令现在主要通过硬件电路来执行,不再依赖微码进行解释,从而显著提升了指令的执行效率。

Pentium微处理器作为首款引入系统管理技术的性能卓越的微处理器,其卓越之处在于高效地管理了个人电脑系统的能源消耗和安全性。Pentium微处理器之所以展现出卓越的性能,是因为其架构引入了众多创新技术,包括双执行单元、超量级架构、内置浮点运算单元、64位数据通道、指令动态预测转移、高速缓存回写、错误检测与汇报等功能。

2.1.6 Intel PentiumⅡ微处理器

Intel公司继推出Pentium MMX系列之后,又推出了PentiumⅡ系列CPU。这一系列是Pentium Pro的升级版本,其核心技术融合了Pentium Pro与MMX的特点。它不仅支持MMX技术,还将L1 Cache的容量提升至32 KB,并引入了独立的双总线架构,从而显著提升了运行速度。PentiumⅡ的又一显著升级在于舍弃了先前的Socket7接口,转而采用了全新的Slot1插槽接口以及SEC板卡封装技术。这一变革不仅显著提升了其内部总线宽度,而且使得其他产品难以与之实现兼容。PentiumⅡCPU的电路板内置了核心芯片、二级缓存以及缓存控制器。其中,二级缓存的工作频率是主频的一半,这一设计使得其性能略有下降。此外,PentiumⅡ采用了0.25微米工艺、2.0伏的核心电压、4.4纳秒的缓存以及100兆赫的总线等设计。其主频多是350~450 MHz。

2.1.7 Intel PentiumⅢ微处理器

Intel公司于1999年第一季度推出的Pentium Ⅲ CPU,其首批发售型号被命名为“Katmai”,在产品设计上延续了0.25微米工艺、512 KB的半速缓存以及Slot1接口等关键技术。其最显著的优化在于引入了SSE(Streaming SIMD Extensions,即数据流单指令多数据扩展)技术,这一技术显著提升了三维图形处理和浮点运算的性能,同时在设计过程中充分考虑了互联网应用的需求。它的另一显著特性是处理器内部设有唯一序列号,每个Pentium Ⅲ处理器都携带有独一无二的身份标识,用户可通过这一序列号对设备进行身份验证,亦能借助其进行数据加密,从而增强应用的安全性。

1999年10月,Intel公司推出了名为"Coppermine"的全新Pentium Ⅲ处理器。该处理器在继承“Katmai”CPU特性的同时,新增并提升了多项功能。Coppermine采用了0.18微米工艺设计,有效减少了发热量和功耗,从而提升了系统整体性能。采用新型技术,Coppermine的集成度显著增强,内部搭载了2800万个晶体管,相比之下,Katmai仅拥有900万个;Coppermine采用了133 MHz的前端总线设计,有效拓宽了系统带宽;此外开yun体育app官网网页登录入口,它还内置了256 KB的全速二级缓存,并运用了先进的缓存转换技术。总体而言,Coppermine在架构设计以及运行速度方面均实现了显著提升。

自2000年起,Intel推出了名为“Willamette”的IA-32系列顶级处理器;该处理器系列运用了0.18微米铜制工艺技术生产,配备64KB的L1缓存,L2缓存容量则在256至512KB之间变化,且其工作频率能够达到1.5GHz。Willamette处理器的主要升级亮点在于引入了SSE2指令集。此外,考虑到成本因素和对低端市场的针对性,Intel还推出了采用Coppermine核心的、基于FC-PGA封装技术的Socket370系列处理器。该处理器配备了100 MHz的总线速率,其接口设计类似于Celeron的Socket370结构,然而,它与Celeron的Socket370接口并不相容,必须通过一个专用的连接器进行转换,才能正常投入使用。

2.1.8 Intel Pentium 4微处理器

2000年11月20日,Intel公司正式发布了Pentium 4微处理器。这款处理器的运行频率可达1.4 GHz或1.5 GHz,如今其速度已突破3.0 GHz。Pentium 4采用了0.18 μm工艺的半导体制造技术,晶体管数量达到了4200万个,是Pentium Ⅲ的两倍还多。这款新型处理器主要面向互联网应用领域进行研发,其一级缓存容量为8 KB,二级缓存容量达到256 KB,并采用了新型的423针PC-BGA封装技术。

Pentium 4处理器首次对自Pentium Pro以来的处理器设计进行了革新,摒弃了PentiumⅡ、Pentium Ⅲ、Celeron等处理器沿用的“P6”架构,转而采用了名为“Net Burst”的全新架构。该流水线的阶段数增至20个,相较于Pentium Ⅲ的10级,速度上限显著提升。内部算术逻辑单元(ALU)的运行频率是CPU核心频率的两倍,通过让整数运算指令以CPU核心速度的两倍执行,有效提升了处理效率,减少了等待时长。Pentium 4引入了名为SSE2的144条新指令集,这使得浮点运算的精确度得到了显著提升,翻了一番。Pentium 4的总线频率可达400 MHz,相比之下,PentiumⅢ的频率仅为133 MHz。得益于总线速度的显著提升,处理器与内存之间的数据交换速度加快,从而使得Pentium 4在视频、音频以及三维图形处理方面表现出更优越的性能。

2.2 微处理器的功能结构

2.2.1 微处理器的典型结构

图2.1展示了微处理器的典型结构,从图中我们可以观察到,该微处理器主要由三个主要部分构成,分别是:

运算器由算术逻辑单元(ALU)构成,该单元负责执行数据的算术与逻辑操作。运算完成后,部分结果特征会被存储在标志寄存器中。

控制器由指令寄存器、指令译码器以及定时与控制电路组成。它依据指令译码的输出,按照既定的时序,发出相应的控制信号,这些信号用于指挥指令的执行过程。

寄存器阵列包含一组通用寄存器与专用寄存器,其中通用寄存器主要功能是暂存运算所需的数据,而专用寄存器则包括指令指针IP(或称程序计数器PC)以及堆栈指针SP等。

在微处理器内部,这三部分间的信息交流通过总线结构完成,该总线作为信息传输的公共通道,被称作“内部总线”或“片内总线”。用户无法直接操控内部总线的工作,故而它对用户而言是透明的。

图2.1 微处理器的典型结构

2.2.2 Intel 8086微处理器功能结构

1. 8086 CPU的内部结构

1) 总线接口单元(BIU)

BIU作为8086 CPU与存储器及I/O设备之间的接口组件,承担着对全部引脚的操控职责,换言之kaiyun全站网页版登录,8086对存储器和I/O设备的所有操作均由BIU执行。所有对外部总线的操作均需确保地址准确且控制信号恰当,BIU的各个部件设计理念主要围绕这一目标展开。该设备配备了16位双向数据总线、20位地址总线以及若干条控制总线,其主要功能包括:从内存单元中预先提取指令,并将这些指令暂时存储在指令队列缓冲器中。在CPU执行指令的过程中,总线接口单元需与执行单元协同工作,从指定内存单元或I/O端口中提取数据并传递给执行单元,亦或将执行单元的处理结果传输至指定内存单元或I/O端口。

图2.2 8086 CPU内部结构示意图

地址加法器与段寄存器共同作用。在8086 CPU中,20位地址线能够直接定位至1 MB的物理存储空间,然而,CPU内部的寄存器却都是16位的。那么,这些16位的寄存器又是如何完成20位的地址寻址的呢?这是通过特定的地址加法器,将段寄存器所存储的段起始地址向左移动四位,然后与16位的偏移地址相加,从而得到一个20位的物理地址,以此来定位存储单元。在获取指令时,通过16位的指令指针(IP)提供偏移地址(逻辑地址),此地址与代码段寄存器(CS)中的内容相加,从而产生一个实际的20位物理地址,该地址随后被送至总线上以完成指令的寻址操作。图2.3清晰地展示了这一物理地址是如何形成的。

图2.3 物理地址形成过程

指令指针IP,即16位指令指针,负责存储下一条即将执行指令在代码段中的位置偏移。此指针需与代码段寄存器CS配合,共同构成指向指令存储单元的物理地址。在程序执行过程中,IP的值会由BIU(Bus Interface Unit,总线接口单元)自动更新,确保其始终指向当前代码段中下一条待取指令的偏移地址。程序缺乏直接操控IP地址的命令,然而,通过特定的操作指令,我们能够对其内容进行编辑。比如,使用转移指令云开·全站体育app登录,可以将目标地址的偏移量输入到IP中,从而实现程序的跳转。

指令队列缓冲器在EU执行指令且不占用总线的情况下,BIU会自动执行预取指令的动作,并将获取的指令依次存入一个6字节的指令队列寄存器中。该寄存器按照“先进先出”的原则运作,并将指令依次传递给EU进行执行。其运作过程遵循以下规则:

一旦指令队列缓冲器达到指令饱和状态,执行单元便即刻启动执行流程。

一旦BIU察觉到队列中缺少了两个字节,它便会自动启动,寻找可用的总线周期来执行预取指令,这个过程会持续进行,直至队列被完全填充。

EU在执行完一条转移、调用或返回指令之后,必须对指令队列缓冲器进行清空,同时指令预取单元BIU需从新的地址处重新开始指令的取用。新取到的第一条指令将直接通过指令队列缓冲器传递至EU执行,随后,BIU在新的地址基础上继续执行预取指令操作,以此完成程序段的转移。

BIU与EU各自独立运作,EU在执行指令之际,BIU能够预先获取后续的一条或数条指令。故此,在常规情况下,CPU在完成一条指令的执行后,能够即刻启动指令队列中存储的下一条指令的执行,无需像过去8位CPU那样,必须遵循先取指令再执行指令的顺序操作模式。

总线控制逻辑电路是连接8086 CPU内部与外部总线的关键部件,负责实现CPU与内存单元或I/O端口间的数据交换。该电路由16位数据总线、20位地址总线以及若干条控制总线组成,通过这些总线,CPU能够与外部设备建立联系,进而构建不同规模的8086微型计算机系统。

2) 执行单元EU

该执行单元内设有一个16位的算术逻辑单元ALU、八个16位的寄存器、一个16位的标志寄存器FLAGS、一个数据临时存储寄存器以及执行单元的控制电路,换言之,它集成了微处理机的三大核心部件。该单元负责对指令进行解析与执行,并负责管理上述提到的寄存器。

算术逻辑运算单元,简称ALU,这是一种16位的运算器。它能够执行8位和16位二进制数的算术及逻辑运算。此外,它还能根据指令的寻址方式,计算出访问存储器所需16位的偏移量。

标志寄存器,简称FLAGS,这是一款16位的寄存器,其主要功能是反映CPU在运算过程中的状态特性,并存储一些控制用的标志信息。

运算过程中,它起到辅助作用,帮助ALU执行计算任务,并临时存储参与计算的数据。

该寄存器组由四个16位的数据寄存器组成,分别是AX、BX、CX和DX;同时还包括四个16位的指针与变址寄存器,它们是SP、BP、SI和DI。

欧盟对电路进行管理。这一功能主要涉及从BIU的指令队列缓冲器中提取指令,然后对这些指令进行解码,随后根据指令的具体要求,向EU内部的各个部件下达控制指令,确保能够实现每条指令所规定的各项功能。

执行单元的各个部件通过16位的ALU总线相互连接,从而在内部实现数据的快速传输。特别需要指出的是,这个内部总线与CPU外接的总线是相互隔离的,这意味着它们可以同时运作而不会相互干扰。EU在执行指令时,是从获取指令的操作码开始的,并且每次从总线接口单元的指令队列缓冲器中提取一个字节。若指令队列缓冲区处于空置状态,EU需等待BIU借助外部总线从存储器中提取指令,并将之传递至EU。随后,EU通过译码电路对指令进行分析,并发出相应的控制指令,以调控ALU数据总线中数据的流动。在执行运算操作时,操作数据会被送入运算暂存器,再由ALU处理。运算完成后,结果数据将通过ALU数据总线传输至相应的寄存器。与此同时,标志寄存器FLAGS会根据运算结果调整其状态。执行指令时,频繁出现对存储器进行读写操作的情况,此时,EU单元负责提供用于寻址的16位有效地址,BIU单元通过计算将其转换为20位的物理地址,随后将该地址发送至外部总线以实现寻址。

2. 8086 CPU的内部寄存器

图2.4 8086 CPU内部寄存器

1) 通用寄存器

通用寄存器亦称作数据寄存器,它既能以16位数据寄存器的形式运作,亦能以两个8位数据寄存器的形式运作。若以16位寄存器使用,它们分别被称为AX、BX、CX、DX。而当作为8位寄存器使用时,AH、BH、CH、DH分别存储高字节,AL、BL、CL、DL则存储低字节,并且这些寄存器可以单独进行寻址。因此,这四个16位寄存器便可以视作八个8位寄存器来使用。

2) 段寄存器

8086 CPU的地址总线宽度为20位,这意味着其可访问的存储容量达到1MB。然而,该CPU的指令所使用的地址编码仅限于16位,同时指令指针以及变址寄存器也都是16位的。因此,8086 CPU无法直接对整个1MB的存储空间进行寻址。为此,我们采用了分段的管理方式,即8086处理器通过一组段寄存器,将1 MB的存储空间划分为若干个逻辑段,每个逻辑段的长度均不超过64 KB。这些段的起始地址,即段基址,分别由4个16位的段寄存器来存储。8086的指令可以直接访问这4个段寄存器。无论是指令的寻址还是数据的寻址,都必须在指定的64 KB范围内进行。在寻址过程中,必须提供相对于分段寄存器所指示的起始地址的一个偏移量,这个偏移量又被称为有效地址,以此来确定段内的具体位置。物理地址的计算工作由BIU负责执行,其具体步骤是先将段地址向左移动4位,接着将得到的值与16位的偏移量相加。

段寄存器共有4个CS、DS、SS、ES。代码段寄存器CS标识了当前指令代码的来源,该代码可从CS所指的存储器段中获取,而指令的偏移量则由IP决定;堆栈段寄存器SS负责确定当前堆栈的起始位置;数据段寄存器DS标示了程序使用的数据存储在哪个段的起始地址;附加段寄存器ES则说明了程序使用附加段的起始地址,通常该段用于存放原始数据或计算结果。

3) 指针与变址寄存器

地址运算主要涉及的是一组包含四个寄存器的指针与变址寄存器,这些寄存器均为16位,通常用于存储地址的偏移量,也就是相对于段起始地址的间距。在BIU的地址器内,这些寄存器的内容左移4位后,与段寄存器的数据相加,从而生成一个20位的物理地址。而堆栈指针SP则负责指示堆栈段中当前栈顶的具体地址。入栈操作(PUSH)与出栈操作(POP)均依据SP寄存器提供的栈顶偏移地址进行。基址指针BP指向堆栈段中待处理数据的起始地址,因此得名基址指针寄存器。而变址寄存器SI与DI则负责存储当前数据段中特定单元的偏移量。

4) 指令指针与标志寄存器

指令指针IP的作用与Z80 CPU的程序计数器PC相似。在系统正常运行过程中,IP中记录的是BIU即将读取的下一条指令的偏移量。IP具备自动递增的特性,每次执行指令读取操作后,它都会自动加1,从而指向下一个内存单元。在读取一个字节时,IP的值增加1;而在读取一个字时,IP的值则增加2。某些特定指令能够调整IP的数值,而其他指令则能够让IP值被存入堆栈或从堆栈中取出。

FLAGS寄存器是一个16位的寄存器,在8086处理器中,它被利用了其中的9个有效位。其结构如图2.5所示,其中包含6位状态标志位和3位控制标志位。状态标志位用于表示指令执行后数据的一些特性。此外,控制标志位还可以被程序写入,以此实现对处理器状态或程序执行方式的调控。

图2.5 标志寄存器格式

(1) 6个状态标志位的功能分别叙述如下:

CF,即进位标志位,在执行加法(或减法)运算过程中,若最高位发生进位(或借位),则CF置为1;若未发生进位,则CF置为0。

PF(奇偶标志位)用于指示运算结果中1的个数是偶数还是奇数。若低8位中1的个数成双,则PF的值为1;反之,若1的个数不成双,PF的值则为0。

AF(辅助进位标志位)表示的是在进行加法(或减法)操作时,如果运算结果的低四位向高四位发生了进位(或借位)现象,那么AF的值将设定为1;反之,如果没有发生进位(或借位),AF的值则保持为0。

ZF(零标志位)表示当运算结果等于零时,该标志位被置为1;若运算结果非零,则该标志位保持为0。

SF,即符号标志位,其与运算结果的最高位保持一致。