【微机】MC(Micro computer)原理基础随笔

您所在的位置:网站首页 计算机的CPU是指内存储器控制器运算器加法器 【微机】MC(Micro computer)原理基础随笔

【微机】MC(Micro computer)原理基础随笔

2024-07-15 21:35| 来源: 网络整理| 查看: 265

一、发展历程

Section 1 第1阶段

微处理器是微型计算机的核心芯片,简称μP或MP(Micro Prodcessor)。它将计算机中的运算器和控制器集成在一片硅片上,也称为中央处理单元,即CPU(CentralProcessing Unit)。它是20世纪70年代人类重要的创新之一在四十多年的时间中获得了极快的发展,其集成度和性能几乎每过一年就会提高1.5~2倍。微处理器和微型计算机的发展历史是与大规模集成电路的发展分不开的。

硅平面管工艺和二极管晶体管逻辑电路的发展,使得有了小规模集成电路SmallScaleIntegration,SSI)

金属氧化物半导体(MOS)工艺,使可集成几千个晶体管,出现大规模集成电路LSI(LargeScale Integration)

现代新型的集成电路已可在单个芯片上集成数亿个晶体管,工作频率超过3GHz

Section 2 第2阶段

虽然集成电路技术在不断发展,但终归受物理性能的限制而不存在极限。微处理器的两大巨头Intel和AMD发现单纯地通过提高芯片的集成度以提升工作频率,已无法明显提升系统整体性能,性能的提高会受到多种因素的制约:

处理器内部计算速度和外部访问存储器的访问速度差异越来越大,由于访存限制,CPU性能很难有明显提高

随着功率的增大,散热问题成为了一个无法逾越的障碍

超标量和超流水线技术已接近了极限,开发成本也在不断提高

到2004年左右,尽管晶体管数目还是呈线性增加,但时钟频率和性能都已达到拐点,按传统提高芯片时钟频率的方式来提高系统的性能已经走到了尽头。在这个背景下,片上多核处理器(ChipofMultiprocessor,CMP)技术应运而生。

自微处理器诞生到20世纪末,每块MP中都只有1个"核心",称为单核处理器,核心又称为内核,是CPU重要部分,CPU所有的计算、数据处理、接受和存储命令都由核心执行。而"多核"处理器技术试图通过增加CPU上的核心数量来突破主频限制、提高性能。简单地说,就是将多个功能相同的计算内核集成在一个处理器中,使处理器每个时钟周期内的执行能力随着计算内核的个数增加而大幅度增加,从而提高了计算能力。

Section 3 第3阶段

IBM于2001年发布了第一款多核处理器POWER4;紧接着,AMD和Intel也都于2005年前后推出了自己的首款多核处理器芯片AMDOpteron和CoreDuo。经过十几年时间的发展,如今市场上已经有大量多核处理器芯片可供选择,如IntelHaswell、Intel、Xeon Phi、AMD Cortex-A9、Nvidia GPGPU等。由于目前又对于多核处理器的设计还没有完全统一的标准,因此各大厂商多核处理器的设计目标也会有所不同。

Intel:以强化单个处理器核的计算性能和效率为目标,关注高性能计算领域,设计复杂核以最大化单线程性能;

ARM:设计目标则是低功耗、高性能和低成本,主要关注嵌入式系统和移动通信领域

Nvidia:则是以最大化芯片吞吐量为设计目标,最大程度地提高可集成处理器核的数量

IBM:专注于高性能服务器市场,最大程度地挖掘所有可用资源,提是高系统整体的运行效率

AMD:主要注重整个多核处理器系统的任务吞吐量,简化了单个处理器核的设计结构,融入了更多的处理器核并强化处围部件的结构设计

二、工作过程 2.1 程序运行

2.2 微机组成

微型计算机(Microcomputer)是体积、重量、计算能力都相对比较小的一类计算机的总称,一般供个人使用,所以也称为个人计算机(Personal Computer,PC)。人们通常所说的微型机实际上指的是微型机系统。微机系统流、微型机和微处理器是3个不同的概念,是微型计算机从全局到局部的3个不同的层次。微型计算机系统的概念结构如图1-4所示,它由硬件系统和软件系统两大部分组成。

所有的微型机系统都采用了总线结构形式。总线结构的主要优点是设计简单、灵活性好、具有优良的可扩展性、便于故障检测和维修。图1-5为微型计算机的系统结构框图。地址总线AB(Address Bus),用于传送读/写存储器(RAM或ROM)或读/写输入输出接口(I/O接口)的地址信息;数据总线DB(Data Bus),传送操作的数据;CB表示控制总线(Control Bus),传送控制信息、时序信号和状态信息。

2.2.1 硬件系统

1)微处理器(或中央处理器、CPU),微型计算机的核心芯片,是整个系统的运算和指挥控制中心。不同型号的微型计算机,其性能的差别首先在于其CPU性能的不同,而CPU性能又与它的内部结构有关。无论哪种CPU,其内部基本组成都大同小异,即包括控制器、运算器和寄存器组3个主要部分。

运算器:核心部件是算术逻辑单元ALU,作用是完成加、减、乘、除四则运算和各种逻辑运算

控制器:一般由指令寄存器、指令译码器和操作控制电络组成,作用读取指令发出控制信息

寄存器:实质上是CPU内部的若干个存储单元,作用暂存某些操作数或中间结果,提高效率

2)存储器,主机系统中的存储器(Memory)又叫内存或主存,是微型计算机的存储和记忆部件,用以存放数据(包括原始数据、中间结果和最终结果)和当前执行的程序。微型机的内存均由半导体材料制成,故也称半导体存储器。

内存单元地址和内容。每个内存单元规定存放8bit(1字节),为了区分各个不同的内存单元,编号称为内存地址

内存的操作。CPU对内存的操作有读、写两种

内存分类。按工作方式不同,可分为随机存储器RAM和只读存储器ROM计算机硬盘基础

2.2.2 软件系统

软件包括系统软件和应用软件两大类。应用软件是用户为解决各种实际问题(如数学计算、检则与实时控制、音乐播放等)而编制的程序。系统软件主要包括操作系统(OS)和系统实用程序。操作系统是一套复杂的系统程序,用于管理计算机的硬件与软件资源、进行任务调度、提供文件管理系统、人机接口等。操作系统还包含各种I/0设备的驱动程序;系统实用程序包括各种高级语言的翻译/编译程序、汇编程序、数据库系统、文本编辑程序以及诊断和调试程序,此外还包括许多系统工具程序等。

三、数值编码 3.1 进制转换

十进制数整数和小数部分应分别进行转换。整数部分转换为二进制数时采用"除2取余"的方法,即连续除2并取余数作为结果,直至商为0,得到余数从低位到高位依次排列即得到转换后二进制数的整数部分;对小数部分,则用"乘2取整"的方法,即对小数部分连续用2乘,以最先得到的乘积的整数部分为最高位,直至达到所要求的精度或小数部分为0为止。

3.2 表示范围

1)无符号二进制数的表示范围。N位范围[0,2^n-1],包含个数2^n;例如n=8,即[0,255],256个数

2)有符号二进制数的表示范围。N位范围[-2^(n-1),2^(n-1)-1],包含2^n-1;例如n=8,即[-128,127],255个数

正数:原码=补码=反码;负数:反码=原码数值位取反、补码=反码+1、原码=补码数值位取反+1

原码与反码表示法中,正负0表示不相同;补码中没有这个问题。

原码/反码表示法的优点是简单、易于理解,与真值间的转换较为方便,实现乘除运算的规则比较简单。缺点是进行加减运算时比较麻烦,要比较进行加减运算的两个数的符号、两个数绝对值大小,还要确定运算结果的正确的符号号等。正数&负数补码间关系:

[正数]补码 -> 全位取反 -> 加1 = [负数]补码

[负数]补码 -> 全位取反 -> 加1 = [正数]补码

[负数]补码 -> 补码(数值位取反再加1) = [负数]原码

四、8086核心特点 4.1 指令流水线

在8088/8086未出现以前,微处理器是按顺序串行完成以上各操作的。而从8086/8088开始,CPU采用了一种新的结构来并行地完成这些工作。8088/8086将上述步骤分配给CPU内两个独立的部件:执行单元(ExecutionUnit,EU)和总线接口单元(BusInterfaceUnit,BIU)。EU负责分析指令(指令译码)和执行指令,BIU负责取指令、取操作数和写结果。这两个单元都能够独立地完成各自相应的工作。所以,当这两个单元并行工作时,在大多数情况下,取指令操作与执行指令作都可重叠地进行。因为BIU已经从存储器中将EU要执行的指令"预取"了出来,所以大多数情况下"省掉"了取指令的时间,从而加快了程序的运行速度。

指令队列的存在使8086/8088的EU和BIU能够并行工,从而减少了CPU为取指令而等待的时间,提高了执行效率和运行速度。另外也降低对存储器存取速度的要求。当然,这种并行流水线结构不能与现在新型CPU(如Pentiun、K7等)的指令流水线相提并论,但它为现代流水线技术奠定了基础,也使8086/8088成为CPU发展史上的一个里程碑。

4.2 内存分段技术

8088/8086CPU的内部结构都是16位的,即内部的寄存器只能存放16位二进制码,内部的总线同时也只能传送16位二进制码。16位二进制码马最多只具有2^16=64K种组合。如果用二进制码表示地址,则8088/8086就只能产生64K个地址,亦即最多能够管理64个内存单元。由于内存容量的大小对计算机的性能有直接的影响,为了提高系统的执行速度,人们希望尽可能地提高系统管理(寻址)内存的能力。为此,80806/8088采用了分段管理的方法,将内存地址空间分为多个逻辑段,每个逻辑段最大为64K个单元,段内每个单元的地址码(称为偏移地址或相对地址)长度为16位,满足其16位内部结构的要求;再为每个段设置段地址(也称段基地址),以区分不同的逻辑段。所以,8088/8086系统中,内存每个单元的地址都由两部分组成,即段地址和段内偏移地址。这就相当于一栋大楼中的每一个房间的编号都是由楼层号和在所在层的位置号(相对于起始房间的位置)组成的。例如,312房间通常表示3楼第12号房间。8088/8086CPU内部具有专门存放段地址的段寄存器和存放偏移地址的地址寄存器,将两类不同寄存器的内容送入地址加法器中合成,就形成了指向内存某一具体单元的地址(物理地址)。

4.3 CPU内部结构

1)执行单元EU的主要功能是:执行指令、分析指令、暂存中间运算结果并保留结果的特征。它由算术逻辑单元(运算器)ALU、通用寄存器、标志寄存器和EU控制电路组成。EU在工作时不断地从指令队列中取出指令代码,对其译码后产生完成指令所需要的控制信息。数据在ALU中进行运算,运算结果的特征保留在标志寄存器FLAGS中。

2)总线接口单元BIU负责CPU与存储器、I/O接口之间的信息传送。它由段寄存器、指令指针寄存器、指令队列、地址加法器以及总线控制逻辑组成。8088的指令队列长度为4字节,8086的指令队列长度为6字节。

当EU从指令队列中取走指令,指令队列出现空字节时,BIU就自动执行一次取指令周期,从内存中取出后续的指令代码放入队列中。当EU需要数据时,BIU根据EU给出的地址从指定的内存单元或外设中取出数据供EU使用。在过算结束时,BIU将运算结果送人指定的内存单元或外设。如果指令队列为空,EU就等待,直到有指令为止。若BIU正在取指令,EU发出访问总线的请求,则必须等BIU取指令完毕后该请求才能得到响应。一般情况下,程序顺序执行,当遇到跳转指令时,BIU就使指令队列复位,从新地址取出指令,并立即传给EU去执行。

4.4 内部寄存器

8086/8088 CPU内部共有14个16位寄存器。按其功能可分为三大类,即通用寄存器(8个)、段寄存器(4个)、控制寄存器(2个),如图2-8所示。

1)通用寄存器:包括数据寄存器、地址指针寄存器和变址寄存器

  (1)数据寄存器:AX、BX、CX、DX,通常用于存放参与运算的数据或运算的结果。每个数据寄存器都是16位寄存器,但又可将高、低8位分别作为两个独立8位独立寄存器使用。其除作为上述外,它们还有各自习惯用法。

AX(Accumulator):累加器,常存放逻辑运算中操作数,另外所有I/O指令都使用累加器与外设接口传送信息

BX(Base):基址寄存器,常用来存放访问内存时的基地址

CX(Count):计数寄存器,在循环和串操作指令中用作计数器

DX(Data):数据寄存存器,在寄存器间接寻址的I/O指令中存放收I/O端口的地址

另外,在做双字长乘除法运算时,DX与AX合起来存放-一个双字长数(32位),其中DX存放高16位,AX存放低16位。

  (2)地址指针寄存器SP/BP:也可以存放数据,但实际上更重要的用途是存放内存单元的偏移地址

SP(Stack Pointer):堆栈指针寄存器,它在堆栈操作中用来存放栈顶偏移地址,永远指向堆栈的栈顶。

BP(Base Pointer):基址指针寄存器。一般也常用来存放访问内存时的基地址,但它通常与SS寄存器配对使用。(比较:BX通常与DS寄存器配对使用。)

  (3)变址寄存器SI、DI:SI(Source Index)称为源变址寄存器,DI(Destination Index)称为目的变址寄存器,它们常常在变址寻址方式中作为索引指针。

  2)段寄存器CS、SS、DS、ES:CS(Code Segment)称为代码段寄存器,SS(Stack Segment)称为堆栈段寄存器DS(Data Segment)称为数据段寄存器,ES(Extra Segment)称为为附加数据段寄存器。段寄存器用于存放段基址,即段起始地址的高16位。

  3)控制寄存器IP、FLAGS:IP(Instruction Pointer)称为指针寄存器,用以存放预取指令的偏移地址。CPU取指令时总是以CS为段基址,以IP为段内偏移地址。当CPU从CS段中偏移地址为(IP)的内存单元中取出指令代码的一个字节后,IP自动加1,指向指令代码的下一个字节。用户程序不能直接访问IP。

  【1】详细概括:8086/8088CPU内部寄存器_8086/8088cpu内部有哪些寄存器

4.5 存储器组织

Section1 物理地址

8088/8086有20条地址线,可寻址的最大物理内存容量为1MB(2^20B),其中任何1个内存单元都有1个20位的地址,称为内存单元的物理地址。8086是16位结构的CPU,意味说在8086内部,能够一次性处理、传输、暂时存储的信息的最大长度是16位。很自然地,这里产生了矛盾:如果只是简单地将地址从内部发出,那么8086只能发出16位的地址,表现的寻址能力也就只有2^16byte,即64KB。这与1M的寻址能力不符!那么如何解决该矛盾呢?在正式讨论之前,我们换一个话题。如下图所示,假如大熊要去图书馆,询问胖虎图书馆的具体位置(物理地址),于是胖虎告诉他:

(1)你可以从从学校走2826米能到图书馆;

(2)也可以从学校走2000米到体育馆,再走826米就是图书馆

显然,两种方式大熊都能找到图书馆的位置。那么现在加一些限制条件,只能纸质通信且只能用三位数表示:即选择的方式2可行,2826 = 200*10 + 826 (200乘10对应二进制,表示向左移动1位,在末尾添加0)。概括表述为:先用200米表示起始位置,我给它起个名字叫段地址,将200米乘以10的位置我们叫它基地址,基地址再加上偏移位置826米,正好是2826米,也就是图书馆的位置! 对于8086,物理地址=段基址×16+段内偏移

Section2 段寄存器

段寄存器的设立不仅使8088的存储空间扩大到1MB,而且为信息按特征分段存储带来了方便。在存储器中,信息按特征可分为程序代码、数据、堆栈等。为了操作方便,存储器可以相应地划分为:程序段--用来存放程序的指令代码;数据段及附加数据段--用来存放数据和运算结果;堆栈段--用来传递参数、保存数据和状态信息。有时一种类型的段可能还会有多个。通过修改段寄存器的内容,就可将这些段设置在存储器的任何位置上。这些段可以通过段寄存器的设置使之相互独立,也可将它们部分或完全重叠。

五、8086指令系统

控制计算机完成指定操作并能够被计算机所识别的命令称为指令。一台计算机能够识别的所有指令的集合称为该机的指令系统。不同的计算机(或者说不同的微处理器)具有各自不同的指令系统。指令系统定义了计算机硬件所能够完成的基本操作,其功能的强弱在一定程度上决定了硬件系统性能的高低。

5.1 指令/寻址 5.1.1 基本格式

指令通常由两个部分组成,操作码(或称指令码) + 指令操作的对象,称为操作数。指令的长度(所占的字节数)会影响指令的执行时间。8086指令的长度在1~7个字节之间。操作码占用一个字节或两个字节。指令的长度主要决定于操作数的个数及所采用的寻址方式。在微处理器指令系统中,通常指令在格式上就有以下3种形式:

1)零操作数指令。指令在形式上只有操作码,操作数是隐含存在的。这类指令操作的对象通常为处理器本身。

2)单操作数指令。指令中仅给出一个操作数,另一个操作数隐含存在。

3)双操作数指令。格式如图上述所示。

5.1.2 操作数类型

8086指令中的操作数主要有3种类型:立即数操作数、寄存器操作数和存储器操作数。

1)立即数操作数:指具有固定数值的操作数,即常数;不因指令的执行而发生变化;只能用作源操作数,而不能用作目标标操作数,原因是立即数是一个常数,没有表示地址的含义。

2)寄存器操作数:8086CPU的8个通用寄存器和4个段寄存器可以作为指令中的寄存器操作数,它们既可以作为源操作数,也可以用作目标操作数。通用寄存器通常用来存放参加运算的数据或数据所在存储器单元的偏移地址。段寄

存器用来存放当前操作数的段基地址。仅有个别指令将标志寄存器FLAGS作为指令的操作数。

3)存储器操作数:含义是参加运算的数据是存放在内存中,其在指令中既可作为源操作数,也可作为目标操作数

5.2 寻址方式

寻址方式,是指获得操作数所在的地址的方法。在8088/8086系统中,一般将寻址方式分为两种不同的类型:

1)寻找操作数的地址;

2)寻找要执行的下一条指令的地址,即程序的地址。

后者主要在程序转移或过程调用时用来寻找目标地址或入口地址,这将在调用指令(CALI)和程序转移指令(JMP)中介绍。在8086指令系统中,说明操作数所在地址的寻址方式可分为8种。

【2】blog.csdn.net

5.2.1 立即寻址

立即寻址(ImmediateAddressing)方式只针对源操作数。此时源操作数是一个立即数,它作为指令的一部分,紧跟在指令的操作码之后、存放于内存的代码段中,在CPU取指令时随指令码一起取出并直接参加运算。

5.2.2 直接寻址

直接寻址(Direct Addressing)方式表示参加运算的数据存放在内存中,存放的地址由指令直接给出,即指令中的操作数是存储器操作数。"[]"内16位常数表示存放数据的偏移地址,数据段基地址默认为数据段,可以允许段重设。

【例3-2】指令"MOVAX,[3102H]"表示将数据段中偏移地址为3102H和3103H两单元的内容送到AX中。假设DS = 2000H,则所寻找的操作数的物理地址为20000H+3102H=23102H、

5.2.3 寄存器寻址

在寄存器寻址(Register Addressing)中指令的操作数为CPU的内部寄存器。它们可以是数据寄存器(8位或16位),也可以是地址指针、变址寄存器或段寄存器。【例3-4】指令"MOV SI,AX"表示将AX的内容送到寄存器SI中。若指令执行前AX=2233H,SI=4455H,则指令执行后SI=2233H,而AX中的内容保持不变。采用寄存器寻址方式,虽然指令操作码在代码段中,但操作数在内部寄存器中,指令执行时不必通过访问内存就可取得操作数,故执行速度较快。

5.2.4 寄存器间接寻址

寄存器间接寻址(Register Indirect Addressing)是用寄存器中内容表示操作数的偏移地址。此时寄存器中内容不再是操作数本身,而是存放数据的偏移地址,操作数本身在内存中。同时存放操作数偏移地址的寄存器只允许是SI、DI、BX和BP,可简称为间址寄存器或称为地址指针。选择不同的间址寄存器涉及的段寄存器不同。

1)在默认情况下,选择SI、DI、BX作间址寄存器时,操作数在数据段,段基地址由DS决定;

2)选择BP作间址寄存器,则操作数在堆栈段,段基地址由SS决定。

有些书中又将使用BX、BP作为间址寄存器的寄存器寻址力方式称为基址寻址方式;而将使用SI、DI作为间址寄存器的寄存器寻址方式称为变址寻址方式。

5.2.5 寄存器相对寻址

在寄存器相对寻址方式中,操作数在内存中的存放地址(偏移地址)由间址寄存器的内容加上指令中给出的一个8位或16位的位移量组成。操作数所在段由所使用的间址寄存器决定。

【例3-7】指令MOV AX,DATA[BX]的寻址过程示例。设:DS=6000H,BX=1000H,DATA=0008H。则操作数所在单元的物理地址=60000H+1000H+0008H=61008H。执行结果:AX=5566H。寄存器相对寻址常用于存取表格或一维数组中的元素-把表格的起始地址作为位移量,元素的下标值放在间址寄存器中(反过来也可以)。

5.2.6 基址-变址寻址

5.2.7 基址-变址相对寻址

使用这种寻址方式可以很方便地访问二维数组。例如,用基址寄存器存放数组的首地址(偏移地址),而变址寄存器和位移量分别存放行和列的值,指令就可以直接访问二维数组中指定的行和列的元素。

5.2.8 隐含寻址

例如指令MULBL的功能是把AL中的内容与BL中的内容相乘,乘积送到AX寄存器,即AL X BL->AX。这条指令隐含了被乘数AL及乘积AX。

5.3 指令使用 5.3.1 MOV

(1)寄存器与寄存器、段寄存器间的数据传输;

(2)寄存器与存储器间的数据传输;

(3)立即数到寄存器、存储器的数据传输;

(4)存储器与段寄存器的数据传输.

两个操作数不能同为存储器操作数。若要在两个存储器单元之间进行数据传送,需用两条MOV指令实现。

不能用立即数直接给段寄存器赋值。要实现此功能,需使用两条MOV指令。

两个操作数不能同时为段寄存器。同样,要实现段寄存器到段寄存器的数据传送,需用两条MOV指令。

5.3.2 IN/OUT

根据CPU方面看,只有累加器AL(或AX)才能与I/0端口进行数据传送,所以这两条指令也称为累加器专用指令。有两种寻址方式:直接寻址与寄存器间接寻址

(1)IN acc, port #直接寻址,port为用8位立即数表示的端口地址

(2)IN acc, DX #间接寻址,16位端口地址由DX给出(MOV DX,03BOH;IN AL,DX)

注意:采用间接寻址的IN/OUT指令只能用DX寄存器作为间址寄存器。

5.3.3 算数指令

(1)ADD [ST],[BX] ;不允许两个操作数都是存储器操作数

(2)ADD DS,AX ;不允许把段寄存器作为操作数

(3)乘法要求两操作数字长相等且不能为立即数,某些时候可用左移指令代替乘法,提高效率

(4)除法指令要求被除数的字长必须为除数字长的两倍

参考文档:

【1】微型计算机原理与接口技术 (第4版) by 吴宁, 乔亚男.pdf

【2】寄存器间区别及用途详解:8086CPU各寄存器及其简介_8086cpu的dx-CSDN博客



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3