计算机组成与体系结构
学习步骤及分类总结:
进制转换码制(原码/反码/补码/移码)浮点数的表示逻辑运算CPU的组成(运算器与控制器)Flynn分类法寻址方式CISC和RISC(CPU指令集)流水线技术计算机层次化存储体系Cache(缓存)主存编址计算输入/输出技术总线系统可靠性与可用性奇偶校验码CRC循环冗余校验码海明校验码计算机指标
一、进制转换
我们常用的进制包括:二进制、八进制、十进制与十六进制。
以下大致列举相互转换的方式:
二转八(小数点向外三位一运算):
1011101.101 = 001 011 101. 101 = 135.5
11010111.0100111 = 011 010 111 . 010 011 100 = 327.234
-
二转十(乘以2的次方):
1011101.101 = 1+4+8+16+64+0.5+0.125 = 93.625
-
二转十六(小数点向外四位一运算):
1011101.101 = 0101 1101 . 1010 = 5 13 . 10 = 5D.A
八转二:
55.3 = 101 101 。 011 = 101101.011
-
八转十(乘以8的次方):
55.3 = 5+40+0.375 = 45.375
-
八转十六(八转二,二转十六):
八转二 55.3 = 101101.011 二转十六 0010 1101 . 0110 = 2 13 .6 = 2D.6
十转二(除二取余):59.25 = 111011.01
-
十转八(除八取余):3459.25 = 6603.2
-
十转十六(除十六取余):273459.25 = 42C33.4
十六转二:
39C.D8 = 3 9 12 . 13 8 = 0011 1001 1100 . 1101 1000 = 1110011100.11011
-
十六转八(十六转二,二转八):
39C.D8 = 1110011100.11011 = 001 110 011 100 . 110 110= 1634.66
-
十六转十(乘以16的次方):
39C.D8 = 3 9 12 . 13 8 = 12+144+768+0.8437 = 924.8437
以上是各进制之间大致的转换,具体内容不做陈述。
二、码制(原码/反码/补码/移码)
概念:数在计算机中的表示形式统称为机器数。计算机中处理数据及运算都是采用二进制,通常规定机器数用八位二进制表示。实用的数据有正数和负数,因为计算机只能表示0、1两种状态,数据的正号“+”或负号“-”,在计算机里就用一位二进制的0或1来区别,通常放在最高位,成为符号位。 符号位数值化之后,为能方便的对机器数进行算术运算、提高运算速度,计算机设计了多种符号位与数值一起编码的方法,最常用的机器数表示方法有:原码、反码、补码和移码,下面就分别介绍一下它们的表示方法。
记住口诀:
符号位即八位字符的第一位,1为负,0为正。正数的原码,补码,反码相同;负数的反码:原码的数值取反;比如该负数原码是:0 0000001,那么它取反就是0 1111110负数的补码:原码转换成反码,反码末位加1;比如该负数的反码是1 1111110,那么它末位加1就是1 1111111负数的移码:与补码的符号位(第一位数字)相反;比如该负数的补码是1 1111111,那么它的移码就是0 1111111不论正负数移码和补码的关系:同一数值的移码与补码符号位相反,其它各位相同。
已知补码求原码:
最高位如果是1的话(负数),那么除了最高位之外的取反,然后加1得原码。
最高位如果是0的话,不变,正数的补码就是他的原码。
对应范围:
三、浮点数的表示
浮点数是一种 公式化 的表达方式,用来近似表示实数,并且可以在表达范围和表示精度之间进行权衡(因此被称为浮点数)。
浮点数通常被表示为:
N=M×R^E
比如: 123.45=1.2345×10^2
其中,M(Mantissa)被称为浮点数的 尾数 ,R(Radix)被称为阶码的 基数 ,E(Exponent)被称为阶的 阶码 。首先进行对阶,阶码小的向阶码大的对齐。(尾数是小数)
计算机中一般规定R为2、8或16,是一个确定的常数,不需要在浮点数中明确表示出来。
因此,在已知标准下,要表示浮点数:
一是要给出尾数M的值,通常用定点小数形式表示,它决定了浮点数的表示精度,即可以给出的有效数字的位数。二是要给出阶码E,通常用定点整数形式表示,它指出的是小数点在数据中的位置,决定了浮点数的表示范围。因此,在计算机中,浮点数通常被表示成如下格式:(假定为32位浮点数,基为2,其中最高位为符号位)
四、逻辑运算
逻辑运算符:与,或,非,异或
与运算(&)
进行运算的两个数据,按二进制位进行“与”运算。
规则:0&0=0; 0&1=0; 1&0=0; 1&1=1;
即: 两位同时为“1”,结果才为“1”,否则为0
或运算(|)
进行运算的两个数据,按二进制位进行“或”运算。 运算规则:0|0=0; 0|1=1; 1|0=1; 1|1=1;
即 :参加运算的两个对象只要有一个为1,其值为1。
非运算:~
1取0,0取1 ~1 = 0, ~0 = 1 ~(10001) = 01110
异或运算(^)
参加运算的两个数据,按二进制位进行“异或”运算。
运算规则:0^0=0; 0^1=1; 1^0=1; 1^1=0;
即:参加运算的两个对象,如果两个相应位为“异”(值不同),则该位结果为1,否则为0。
考点:交换两个变量的值(不借助第三个变量)
使用异或运算符:
例:a=6, b=5
核心代码:
(1)a = a ^ b;
(2)b = a ^ b;
(3)a = a ^ b;
在此我解释下,我们知道,两个相同的数异或之后结果会等于 0,即 a ^ a = 0。并且任何数与 0 异或等于它本身,即 a ^ 0 = a。
五、CPU的组成(运算器与控制器)
试着先了解计算机整体结构再往后具体细分CPU的组成:
CPU是一台计算机的运算核心和控制核心。
一、运算器(算术逻辑单元ALU、累加寄存器、数据缓冲寄存器、状态条件寄存器)逻辑、算术运算。
ALU(逻辑运算单元): CPU的执行单元,主要负责运算工作。累加寄存器AC: (是一个数据寄存器),在运算中暂时存放算术或逻辑运算部件ALU运算的结果信息(操作数和中间运算结果)。当运算器的算术逻辑单元(ALU)执行算术或逻辑运算时,为ALU提供一个工作区。暂时存放ALU运算的结果信息。累加器不能用于长时间地保存一个数据。数据缓冲寄存器DR: 用来保存操作数和运算结果等信息,节省读取操作数所需占用总线和访问存储器的时间。主要作用:作为CPU和内存、外部设备之间数据传送的中转站;作为CPU和内存、外部设备之间在操作速度上的缓冲。状态条件寄存器PSW: 用来记录存放计算中产生结果的标志信息,主要分为状态标志和控制标志,如运算结果进位标志(C)、运算结果为0标志位(Z)、运算结果为负标志位(N)、中断标志位(I)、符号标志位、运算结果溢出标志位(V)、奇偶标志等,程序员可以利用状态标志进行判断和跳转。
二、控制器(程序计数器PC、指令寄存器IR、指令译码器ID、地址寄存器AR、时序产生器、操作控制器),是发布命令的决策机构,完成协调和指挥整个计算机系统的操作。不仅保证指令的正确执行,还要能够处理异常事件。
主要功能:从内存中取出一条指令,并指出下一条指令在内存中的位置,对指令进行译码或测试,并产生相应的操作控制信号,以便启动规定的动作,指挥并控制CPU、内存和输入输出设备之间数据的流动。
指令寄存器IR: 保存当前正在执行的一条指令,对用户是完全透明的。当执行一条指令时,CPU先把它从内存储器读取到数据缓冲寄存器DR,再送入指令寄存器IR暂存。指令译码器ID根据IR的内容产生各种微操作指令,控制其他的组成部件工作,完成所需的功能。指令译码器ID: 指令包含操作码和地址码,对指令进行译码(指令中的操作码字段进行分析和解释),译码是编码的逆过程。对指令寄存器中操作码测试,以便识别所要求的操作。并通过操作码产生各种微操作指令,操作码一经编译后即可向操作控制器发出具体操作的特定信号,控制其他的组成部件工作,完成功能。地址寄存器AR: 包含(程序计数器、堆栈指示器、变址寄存器、段地址寄存器),保存CPU当前所要访问的内存单元的地址/IO设备的地址,以方便对内存的读写操作。由于在内存和CPU之间存在着操作速度上的差别,所以必须使用地址寄存器来保持地址信息,直到内存的读/写操作完成为止。程序计数器PC: CPU中跟踪指令地址,存放下一条指令的地址,是专用寄存器,具有寄存信息和计数两种功能,又称为指令计数器。程序的执行分两种,一是顺序执行,二是转移执行。在程序开始执行前,将程序的起始地址,即程序的一条指令所在的内存单元地址送入PC,该地址在程序加载到内存时确定,因此PC的初始内容即是程序第一条指令的地址。执行指令时,CPU将自动修改PC的内容,即每执行一条指令PC增加一个量,这个量等于指令所含的字节数,使其保持的总是将要执行的下一条指令的地址。由于大多数指令都是按顺序执行的,因此修改的过程通常只是简单地对PC加1。当遇到转移指令时,后继指令的地址根据当前指令的地址加上一个向前或者向后转移的位移量得到,或者根据转移指令给出的直接转移的地址得到。当程序出现转移时,则将转移地址送入PC,然后由PC指向新的程序地址。当执行一条指令时,处理器首先需要从PC中取出指令在内存中的地址,然后通过地址总线寻址获取。程序员可以利用程序计数器寻址。
三、寄存器组:可分为专用寄存器和通用寄存器。运算器和控制器中的寄存器是专用寄存器。它是CPU内部的临时存储单元,临时存放一些相关的数据。既可以存放数据和地址,也可以存放控制信息或CPU工作时的状态。CPU中的寄存器通常分为(存放数据的寄存器、存放地址的寄存器、存放控制信息的寄存器、存放状态信息的寄存器和其他寄存器)。
四、内部总线:各部件间信息的传递。
五、
内存原理(知识扩展)
CPU和内存是计算机中最重要的两个组件,CPU工作需要知道指令或数据的内存地址,我们可以了解一下内存工作原理。
内存寻址
首先,内存从CPU获得查找某个数据的指令,然后再找出存取资料的位置时(这个动作称为“寻址”),它先定出横坐标(也就是“列地址”)再定出纵坐标(也就是“行地址”)对于电脑系统而言,找出这个地方时还必须确定是否位置正确,因此电脑还必须判读该地址的信号,横坐标有横坐标的信号(也就是RAS信号,RowAddress Strobe)纵坐标有纵坐标的信号(也就是CAS信号,Column AddressStrobe),最后再进行读或写的动作。因此,内存在读写时至少必须有五个步骤:分别是画个十字(内有定地址两个操作以及判读地址两个信号,共四个操作)以及或读或写的操作,才能完成内存的存取操作。内存传输
为了储存资料,或者是从内存内部读取资料,CPU都会为这些读取或写入的资料编上地址(也就是我们所说的十字寻址方式),这个时候,CPU会通过地址总线(AddressBus)将地址送到内存,然后数据总线(Data Bus)就会把对应的正确数据送往微处理器,传回去给CPU使用。存取时间
所谓存取时间,指的是CPU读或写内存内资料的过程时间,也称为总线循环(buscycle)。以读取为例,从CPU发出指令给内存时,便会要求内存取用特定地址的特定资料,内存响应CPU后便会将CPU所需要的资料送给CPU,一直到CPU收到数据为止,便成为一个读取的流程。内存延迟
内存的延迟时间(也就是所谓的潜伏期,从FSB到DRAM)等于下列时间的综合:FSB同主板芯片组之间的延迟时间(±1个时钟周期),芯片组同DRAM之间的延迟时间(±1个时钟周期),RAS到CAS延迟时间:RAS(2-3个时钟周期,用于决定正确的行地址),CAS延迟时间(2-3时钟周期,用于决定正确的列地址),另外还需要1个时钟周期来传送数据,数据从DRAM输出缓存通过芯片组到CPU的延迟时间(±2个时钟周期)。
六、Flynn分类法
下图大致计算平台介绍:
单指令流单数据流(Single Instruction stream and Single Data stream,SISD)。SISD其实就是传统的顺序执行的单处理器计算机,CPU只能处理一个数据流,其指令部件每次只对一条指令进行译码,并只对一个操作部件分配数据。流水线方式的单处理机有时也被当作SISD.早期的计算机都是SISD机器,如冯诺.依曼架构,如IBM PC机,早期的巨型机和许多8位的家用机等。单指令流多数据流(Single Instruction stream and Multiple Data stream,SIMD)。SIMD以并行处理机(阵列处理机)为代表,并行处理机包括多个重复的处理单元,由单一指令部件控制,按照同一指令流的要求为它们分配各自所需的不同数据。相联处理机也属于这一类。Intel处理器实现的MMXTM、SSE(Streaming SIMD Extensions)、SSE2及SSE3扩展指令集,都能在单个时钟周期内处理多个数据单元。也就是说我们现在用的单核计算机基本上都属于SIMD机器。这类机器在数字信号处理、图像处理、以及多媒体信息处理等领域非常有效。多指令流单数据流(Multiple Instruction stream and Single Data stream,MISD)。MISD具有n个处理单元,按n条不同指令的要求对同一数据流及其中间结果进行不同的处理。一个处理单元的输出又作为另一个处理单元的输入。这类系统实际上很少见到。有文献把流水线看作多个指令部件,称流水线计算机是MISD。多指令流多数据流(Multiple Instruction stream and Multiple Data stream,MIMD)。MIMD是指能实现作业、任务、指令等各级全面并行的多机系统。多处理机属于MIMD.当前的高性能服务器与超级计算机大多具有多个处理机,能进行多任务处理,称为多处理机系统,不论是大规模并行处理机还是对称多处理机,都属于MIMD。最新的多核计算平台就属于MIMD的范畴,例如Intel和AMD的双核处理器等都属于MIMD。
七、寻址方式
寻址:寻找操作数的地址或下一条将要执行的指令地址。数据和指令一般都需要存放在一些存储器的存储单元中,存储器对这些存储单元进行编号,这些编号就是数据和指令的地址,如果在应用中需要用到这些数据或指令时,就通过它们的地址到存储器中去寻找。
9种常用寻址方式
隐含寻址立即寻址寄存器直接寻址寄存器间接寻址直接寻址间接寻址相对寻址基址寻址变址寻址
R=寄存器,E=有效地址,S=操作数,(A)=A中的内容,代码不特别说明表示8086汇编语言,PC=程序计数器(指向当前指令的下一条)
1.隐含寻址
含义:操作数隐含的由累加器给出。(即某指令由固定的操作数,不需要给出)
例子:8086汇编语言 CWD;把AX中的内容按符号位拓展成DX,AX双字
2.立即寻址
含义:指令中直接给出相应的操作数。不是操作数地址,而是操作数本身。
例子: MOV AX,1234H;——1234H就是采用立即寻址
3.寄存器直接寻址(通用寄存器组中直接存放操作数)
含义:指令中给出寄存器号R,操作数存放在R中 E=R,S=(E)=( R )
例子:MOV AX,BX——操作数在BX中
4.寄存器间接寻址(通用寄存器组中存放操作数地址,主存中存放操作数)
含义:指令中给出寄存器号R,R中存放操作数的有效地址 E=( R ),S=(E)=(( R ))
例子:MOV AX,[SI]
5.直接寻址
含义:指令中给出操作数的有效地址,给出操作数在内存的地址。 E=A,S=(E)=(A)
例子:MOV AX,[1234H]
6.间接寻址
含义:指令中给出存放有效地址E的存储单元地址。 E=(A),S=(E)=((A)) 理论上讲可以多次间接寻址,但大多数计算机只允许一次(由于A的寻址范围不足以覆盖整个存储空间)
7.相对寻址
含义:指令中给出相对于PC的偏移量A E=(PC)+A,S=(E)=((PC)+A)
注:A是个带符号数,一般用补码表示,若A的位数与PC不一致,需要带符号填充。
8.基址寻址
含义:指令中给出相对于基址寄存器R的偏移量 E=( R )+A,S=(E)=(( R )+A)
注:A是个带符号数,一般用补码表示,若A的位数与R不一致,需要带符号填充。
9.变址寻址
含义:指令中给出相对变址寄存器R的偏移量 E=( R )+A,S=(E)=(( R )+A)
注:A是个带符号数,一般用补码表示,若A的位数与R不一致,需要带符号填充。
寻址空间大小
设定机器字长位n,A的位数位m
寻址特点:
立即寻址 – 指令的地址字段指出的不是操作数的地址,而是操作数本身。也就是说数据就包含在指令中,只要取出指令,也就取出了可以立即使用的操作数。直接寻址 – 指令的地址字段指出操作数在内存的地址,即有效地址。间接寻址 – 指令的地址字段指出的不是操作数的地址,而是存放操作数地址的主存单元的地址,简称操作数地址的地址。寄存器寻址 – 指令给出的操作数地址不是内存的地址单元号,而是通用寄存器的编号,指向寄存器中存放的操作数(当操作数不放在内存中,而是放在CPU的通用寄存器中时,可采用寄存器寻址方式)。寄存器间接寻址 – 指令给出的操作数地址指向寄存器中存放的内容不是操作数,而是操作数地址,通过该地址可在内存中找到操作数。相对寻址 – 把程序计数器PC的内容加上指令格式中的形式地址来形成操作数的有效地址。八、CISC和RISC(CPU指令集)
CISC(Complex Instruction Set Computers,复杂指令集计算机),以Intel,AMD的X86
CPU为代表。基本思想:进一步增强原有指令的功能,用更为复杂的新指令取代原先由软件子程序完成的功能,实现软件功能的硬件化,导致机器的指令系统越来越庞大而复杂。这种计算机所支持的指令系统趋于多用途、强功能化。指令系统围绕着缩小与高级语言的语义差距以及有利于操作系统的优化而设计。
RISC(Reduced Instruction Set Computers,精简指令集计算机),以ARM,IBM
Power为代表。随着VLSI(超大规模集成电路)技术的发展产生。RISC的设计初衷针对CISC CPU复杂的弊端,选择一些可以在单个CPU周期完成的指令,以降低CPU的复杂度,将复杂性交给编译器。基本思想:通过减少指令总数和简化指令功能,降低硬件设计的复杂度,使指令能单周期执行,并通过优化编译提高指令的执行速度,采用硬布线控制逻辑优化编译程序。
例:CISC提供的乘法指令,调用时可完成内存a和内存b中的两个数相乘,结果存入内存a,需要多个CPU周期才可以完成;而RISC不提供“一站式”的乘法指令,需调用四条单CPU周期指令完成两数相乘:内存a加载到寄存器,内存b加载到寄存器,两个寄存器中数相乘,寄存器结果存入内存a。
CISC也是要通过操作内存、寄存器、运算器来完成复杂指令的。它在实现时,是将复杂指令转换成了一个微程序,微程序在制造CPU时就已存储于微服务存储器。一个微程序包含若干条微指令(也称微码),执行复杂指令时,实际上是在执行一个微程序。这也带来两种指令集的一个差别,微程序的执行是不可被打断的,而RISC指令之间可以被打断,所以理论上RISC可更快响应中断。
CISC和RISC的主要区别:
CISC的指令能力强,但多数指令使用率低却增加了CPU的复杂度,指令是可变长格式;RISC的指令大部分为单周期指令,指令长度固定,操作寄存器。只有Load/Store操作内存。CISC支持多种寻址方式;RISC支持方式少(一般使用寄存器寻址)CISC通过微程序控制技术实现;RISC增加了通用寄存器,硬布线逻辑控制为主,适合采用流水线CISC的研制周期长RISC优化编译,有效支持高级语言
RISC特点:
指令系统中只包含使用频率较高但不复杂的指令。指令长度固定,指令格式少,寻址方式少。只有存取数指令访问主存,其他指令都在寄存器之间运算。大部分指令在一个机器周期内完成,采用流水技术。CPU中增加通用寄存器的数量。硬布线逻辑控制,不用微程序控制技术。采用优化的编译,以有效地支持高级语言。
九、流水线技术
是指程序在执行时候多条指令重叠进行操作的一种准并行处理实现技术。通俗的讲将一个时序过程,分解成若干个子过程,每个过程都能有效的与其他子过程同时执行。这种思想最初是在RISC的架构中出现的,旨在提高处理器处理效率,争取在一个时钟周期中完成一条指令。对于只有单条指令的情况下,流水线方式与顺序执行时没有区别。流水线的原理是在某一时刻可以让多个部件同时处理多条指令,避免各部件等待空闲,由此提高了各部件的利用率,也提高了系统的吞吐率。
在流水线中一条指令的生命周期分为五个过程:
取指:
指令取指(Instruction Fetch)是指将指令从存储器中读取出来的过程。
译码:
指令译码(Instruction Decode)是指将存储器中取出的指令进行翻译的过程。经过译码之后得到指令需要的操作数寄存器索引,可以使用此索引从通用寄存器组(Register File)中将操作数读出。
执行:
指令译码之后所需要进行的计算类型都已得知,并且已经从通用寄存器组中读取出了所需的操作数,那么接下来便进行指令执行(Instruction Execute)。指令执行是指对指令进行真正运算的过程。譬如,如果指令是一条加法运算指令,则对操作数进行加法操作;如果是减法运算指令,则进行减法操作。在“执行”阶段的最常见部件为算术逻辑部件运算器(Arithmetic Logical Unit,ALU),作为实施具体运算的硬件功能单元。
访存:
存储器访问指令往往是指令集中最重要的指令类型之一,访存(Memory Access)是指存储器访问指令将数据从存储器中读出,或者写入存储器的过程。
写回:
写回(Write-Back)是指将指令执行的结果写回通用寄存器组的过程。如果是普通运算指令,该结果值来自于“执行”阶段计算的结果;如果是存储器读指令,该结果来自于“访存”阶段从存储器中读取出来的数据。
考点公式:
流水线执行时间计算公式:第一条指令顺序执行时间+(指令条数-1) * 流水线周期,周期为指令耗时最长的一段。
吞吐率TP=指令数/流水线执行时间
十、计算机层次化存储体系
存储层次是在计算机体系结构下存储系统层次结构的排列顺序。分层原因: 随着CPU不断的升级和总线速度的不断提高,存储器的速度远远不能与之匹配。
所谓存储系统的层次结构,就是把各种不同存储容量,存取速度和价格的存储器按照层次结构组成多层存储器,并通过管理软件和辅助硬件有机的组合成为一个整体,使所存放的程序和数据按照层次分布在各种存储器中。目前,在计算机系统中通常采用三级层次结构来构成存储系统,主要是由高速缓冲存储器cache,主存储器,和辅助存储器组成。
计算机系统的存储器划分:
按所处的位置可分为:内存和外存。按构成存储器的材料可分为:磁存储器、半导体存储器和光存储器。按工作方式可分为:读写存储器和只读存储器。按访问方式可分为:按地址访问的存储器和按内容访问的存储器。相联存储器是按内容进行存储和访问的存储器。按寻址方式可分为:随机存储器、顺序存储器和直接存储器。
(1)层次化的存储结构可以分为:CPU(寄存器)、Cache(高速缓存(也是分级,有L1,L2等缓存))、主存(普通内存)、外存(辅存(硬盘、磁带、光盘))。
高速缓存的存取速度和CPU相匹配,但价格高,且容量小;内存由DRAM构成,速度比高速缓存慢,但容量大;辅助存储器速度比内存慢的多,但容量又比内存大得多。为使存储空间足够大且又能满足CPU的存取速度要求而且价格适中,计算机采用层次化的存储体系结构,在系统运行时,把使用最频繁的程序和数据放在高速缓存中,经常使用的程序和数据放在内部存储器中,把不太常用且容量较大的程序和数据放在辅助存储器中,提高存储体的性能价格比。
(2)从上至下,读取速度越来越慢,存储容量越来越大。
名词介绍:
DRAM 动态随机存取存储器
SRAM 静态随机存取存储器
Cache 高速缓存(也是分级,有L1,L2等缓存),其作用是为了更好的利用局部性原理,减少CPU访问主存的次数。cache分成多个组,每个组分成多个行,
EEPROM 电可擦可编程只读存储器
十一、Cache(缓存)
Cache是一个高速小容量的临时存储器,由快速半导体存储器制成,可以用高速的静态存储器(SRAM)芯片实现以集成到CPU芯片内部,或者设置在CPU与内存之间,用户存储CPU最经常访问的指令或者操作数据。Cache的出现是基于两种因素:首先是由于CPU的速度和性能提高很快而主存速度较低且价格高,其次是程序执行的局部性特点。因此,才将速度比较快而容量有限的SRAM构成Cache,目的在于尽可能发挥CPU的高速度。其作用是为了更好的利用局部性原理,减少CPU访问主存的次数。简单地说,CPU正在访问的指令和数据,其可能会被以后多次访问到,或者是该指令和数据附近的内存区域,也可能会被多次访问。因此,第一次访问这一块区域时,将其复制到cache中,以后访问该区域的指令或者数据时,就不用再从主存中取出。
cache分成多个组,每个组分成多个行,linesize是cache的基本单位,从主存向cache迁移数据都是按照linesize为单位替换的。比如linesize为32Byte,那么迁移必须一次迁移32Byte到cache。 这个linesize比较容易理解,想想我们前面书的例子,我们从书架往书桌搬书必须以书为单位,肯定不能把书撕了以页为单位。书就是linesize。当然了现实生活中每本书页数不同,但是同个cache的linesize总是相同的。
所谓8路组相连( 8-way set associative)的含义是指,每个组里面有8个行。
直接相联映射方式:每个组只有一个line,选中组之后不需要和组中的每个line比对,因为只有一个line,主存中每个块只能映射到Cache的一个特定的块。整个Cache地址与主存地址的低位部分完全相同。这是一种最简单而又直接的映射方法,冲突率高。全相联映射方式:只有一个组,就是全相联。不用hash来确定组,直接挨个比对高位地址,来确定是否命中。且主存中任一块都可以映射到Cache中任一块。冲突率最低。组相联映射方式:S个组,每个组E个line。在组间是直接映射,而组内是全相联映射。相关问题:
我们知道,cache的容量要远远小于主存,主存和cache肯定不是一一对应的,那么主存中的地址和cache的映射关系是怎样的呢?
-
拿到一个地址,首先是映射到一个组里面去。如何映射?取内存地址的中间几位来映射。
-
举例来说,data cache: 32-KB, 8-way set associative, 64-byte line size
Cache总大小为32KB,8路组相连(每组有8个line),每个line的大小linesize为64Byte,OK,我们可以很轻易的算出一共有32K/8/64=64个组。
-
对于32位的内存地址,每个line有2^6 =64Byte,所以地址的【0,5】区分line中的那个字节。一共有64个组。我们取内存地址中间6为来hash查找地址属于那个组。即内存地址的【6,11】位来确定属于64组的哪一个组。组确定了之后,【12,31】的内存地址与组中8个line挨个比对,如果【12,31】为与某个line一致,并且这个line为有效,那么缓存命中。
十二、主存编址计算
该部分为计算题,提供例子,不做过多陈述。
主存编址计算出来的数值单位为大B。 而大B是bite(字节),小b是bit(位),1B=8b。 1k/1kB = 1024B; 1M =1024kB*1024kB = 104857613b。
例: 内存地址从A1000H到B13FFH区域的存储容量为____KB。
-
解:(A1000H-B13FFH)+1 = 10400H; 10400H = 66560B; 66560B/1024 = 65KB。
设用2K * 4位的存储器芯片组成16K * 8位的存储器(地址单元为0000H~3FFFH,每个芯片的地址空间连续),如果按字节编址,则地址单元0B1FH所在芯片的最小地址编号为()。
-
解:如果按字节编址,对应一个大小为16K * 8位的存储器,需要14位地址(16K = 2 ^ 14),14位二进制表示。芯片的大小为2K * 4位,而存储器的大小为16K * 8位,要获得这样一个大小的存储器,则需要(16K * 8bit)/ (2K * 4bit) = 16片。16 = 2 ^ 4,片选地址为高4位,片内地址为(14 - 4)= 低10位。0B1FH转化为二进制00 1011 0001 1111,其中高4位为0010,即片选地址为0010 = 2,则位置为第二片芯片,该芯片的起始地址(最小地址)为 00 1000 0000 0000,即0800H。
十三、输入/输出技术
输入/输出(input/output,I/O),读作“eye-oh”,描述的是在计算机上输入输出数据的操作系统、程序或设备。一般的输入输出设备有打印机、硬盘、键盘和鼠标。实际上,有些设备只有输入功能,如键盘和鼠标;有些设备只有输出功能,如打印机;还有些设备具有输入输出2种功能,如硬盘、磁碟和可写性只读光盘(CD-ROM)。
补充:I/O设备(外设)中存在设备状态字寄存器,又叫设备状态(DSW),是设备所有状态的集合,用来标志设备的工作状态。设备状态寄存器是设备对主机的窗口,CPU通过程序查询设备状态位来判断设备的状态。
I/O设备与主机间交换数据的方式和特点:
无条件I/O方式直接程序控制方式(与无条件IO方式不同,执行IO指令时,会先获得外设的状态)中断IO方式DMA方式(直接主存存取)通道/IO处理机控制方式
无条件I/O方式
即是在CPU读取和写入数据到外部设备时,都必须保证外部设备的工作状态已经准备好了,无需CPU查询。
-
特点:当程序执行到I/O指令时,CPU默认外设始终准备就绪,无需检查I/O的状态。输入时必须确保外设已将数据准备好。输出时,必须确保外部设备的数据锁存器为空,即外设已将上次的数据取走。
-
缺点:一般外设难以满足这种要求。
直接程序控制方式(与无条件IO方式不同,执行IO指令时,会先获得外设的状态)
直接由CPU通过I/O指令对I/O接口访问,主机与外设之间交换信息的每个步骤都在程序中表示出来(全部靠计算机程序控制),整个输入输出过程由CPU执行程序完成。会先获得外设的状态,并根据外设的状态决定下一步操作。程序发出IO指令,询问设备是否就绪,未就绪的话,重复查询,直到到达查询次数上限或者设备就绪为止。
-
缺点:CPU的大量时间用来查询外设的状态。CPU需要不断查询I/O是否完成,因此一直占用CPU。
中断IO方式
当I/O接口准备好接收数据或者向CPU传送数据时会发出中断信号通知CPU。CPU对中断信号确认后,保存当前正在执行的程序的现场,转而去执行I/O中断服务程序,和外设交换数据,完成数据传输。
-
特点:CPU不需要主动查询外设的状态,等待数据期间可以执行其他程序,提高CPU的利用率,CPU和外设可以并行地工作。
-
缺点:一次中断处理的过程需要保存现场、中断处理和恢复现场等阶段,一次中断事件需要执行若干条指令,控制电路相对复杂,无法满足高速的批量数据传送要求。
-
在系统中有多个中断源的情况下,常用的处理方法有多中断信号线法、中断软件查询法、菊花链法、总线仲裁法和中断向量表法。
中断优先级
在中断优先级控制系统中,给最紧迫的中断源分配高的优先级,而给那些要求相对不紧迫的中断源分配低一些的优先级。当不同优先级的多个中断源同时提出中断请求的时,CPU应优先响应优先级最高的中断源。当CPU正在对某一个中断源服务时,又有比它优先级更高的中断源提出中断请求,CPU应能暂时中断正在执行的中断服务程序而转去对优先级更高的中断源服务,服务结束后再回到原先被中断的优先级较低的中断服务程序继续执行。
-
可屏蔽中断与不可屏蔽中断
可屏蔽中断由有中断能力的外设所产生,包括处在定时模式的定时器溢出和I/O中断请求;不可屏蔽中断是出现在NMI(不可屏蔽中断)线上的请求,不受中断标志位的影响,通常用于电源故障。不可屏蔽中断的优先级高于可屏蔽中断。
DMA方式(直接主存(内存)存取)
完全通过硬件控制实现主存与I/O设备间的直接数据成块传送,数据传送过程由DMA控制器(DMAC)进行控制,只需CPU启动传送过程,向设备发出“传输一块数据”的命令。当外设准备好后,通知DMA控制器,DMA控制器从CPU接管总线,并完成外设和内存之间的大量数据传输;传输完成后DMA控制器将总线控制权交还给CPU,数据交换过程不需要CPU的干预。
(1)外设通过DMA控制器向CPU发出DMA请求
(2)CPU响应DMA请求,系统转变为DMA工作方式,并把总线控制权交给DMA控制器
(3)由DMA控制器发送存储器地址,并决定传送数据块的长度
(4)执行DMA传送
(5)DMA操作结束,并把总线控制权交还CPU
-
特点:简化CPU对数据传送的控制,提高了主机与外设并行工作的程度,实现了快速外设和主存之间成批的数据传送,使系统的效率明显提高。
-
缺点:控制电路更加复杂。
通道/IO处理机控制方式
通道和IO处理机方式可以将CPU从对外围设备管理的繁杂工作中解放出来。通道是一种专用控制器,是能够专门执行I/O指令的处理机,又称为输入输出处理器(IOP)。可以实现对外围设备的统一管理,以及外设与主存之间的数据传输。它通过执行通道程序进行I/O操作的管理,为主机与I/O设备提供一种数据传输通道。通道程序存放在存储器中,当需要进行I/O操作时,CPU只要按约定格式准备好命令和数据,然后启动通道即可。通道执行相应通道程序完成操作。效率的提高是以增加更多的硬件为代价的。
-
特点:通道程序可完成较复杂的I/O管理和预处理,很大程度上将主机从繁重的I/O管理中解脱出来,提高系统效率。
-
外围处理机PPU
等同于IO处理机,是通道方式的进一步发展,结构更接近于一般处理机。PPU是专用处理机,它根据主机的I/O命令,完成对外设数据的输入输出。
十四、总线系统
将各个部件链接到一组公共的信息传输线上,这个称之为总线连接(BUS)。如果各个部件之间使用分散连接的话,那么计算机系统必然会因为众多的设备而导致拥有大量的数据导线,从而使得系统变得异常复杂,如果需要动态添加一个新的设备的话,会比较麻烦。
总线的物理实现
从物理角度看,总线有许多导线直接印在电路板上,延伸到各个部件,如下图显示了各个部件与总线之间的物理摆放位置:
图中的CPU,主存,I/O这些插板通过插头与水平方向总线插槽连接。因此,为了保证机械上的可靠连接,必须规定其机械特性;为了保证电气上的正确连接,必须规定其电气特性;为了保证正确地连接到不同部件,还需要规定其功能特性和时间特性。
总线上信息传输方式:有串行和并行两种。
串行:数据一位一位地传递,只有上一位传送完毕之后下一位才能传递,通常由一根导线设计。适合长距离数据传输。
并行:数据中的很多位可以同时传输,使用多根导线制造设计。适合近距离高速数据传输。
两种方式优缺点:
串行:
优点:硬件设计简单,占用引脚较少,有利于集成。
缺点:数据传输效率较低。
-
并行:
优点:数据传输效率较高,吞吐量大。
缺点:硬件设计复杂,占用较多引脚,集成复杂。
总线分类
(1)芯片内总线:
片内总线是指芯片内部的总线,如在CPU芯片的内部,寄存器和寄存器之间,寄存器和运算逻辑单元ALU之间的都是由片内总线连接而成的。
(2)系统总线(微机/板级/板间总线):
系统总线是指CPU,主存,I/O设备各大部件之间的信息传输线。由于这些部件通常安放在主板的各个插件板上,因此又称为板级总线或板间总线。比如:PC总线、ISA总线、EISA总线、PCI总线都属于系统总线。
按照系统总线传输的信息的不同,又可以分为三类:
数据总线:数据总线用来传输各功能部件之间的数据信息,他是一个双向的传输总线,其位数与机器字长,存储字长有关,一般为8位,16位或者32位。数据总线的位数成为数据总线的宽度,他是衡量系统性能的一个重要参数。CPU一次传输的数据与数据总线带宽相等。
-地址总线:传送地址,它决定了系统的寻址空间。地址总线主要用来指出数据总线上的源数据或者目的数据在主存储单元的地址或者I/O设备的地址。地址总线的数据用来指明CPU想要访问的存储单元或者I/O端口的地址,由CPU输出,单向传输。数据线的位数代表着系统能够寻址的空间大小,比如地址线宽为20那么地址空间为2的20次方。
-控制总线:传送控制信号和时序信号,如读/写、片选、中断响应信号等,数据总线和地址总线是被挂在总线上的所有设备所共享,那么这些设备之间怎么协调使用呢?答案就是控制总线,依靠控制总线来完成共享总线的占用申请。控制总线是发出各种控制信号的,因此它的传输方向就是单向的。但是,通常对于CPU而言的话,控制总线是既有输入,又有输出的。常见的控制信号有:时钟,复位,总线占用请求等等。
(3)通讯总线:
这类总线用于计算机系统之间或计算机系统与其他系统之间的通讯,比如网络连接。这类通讯涉及许多方面,因此互相之间差别极大,传输的类别很多,但是总体可以分为两种:串行和并行。
总线结构:
总线结构整体可以分为单总线结构和多总线结构。
单总线(系统总线):计算机的各个部件均系统总线相连,所以它又称为面向系统的单总线结构。在单总线结构中,CPU与主存之间、CPU与I/O设备之间、I/O设备与主存之间、各种设备之间都通过系统总线交换信息。
-
优点:控制简单方便,扩充方便。
缺点:由于所有设备部件均挂在单一总线上,使这种结构只能分时工作,即同一时刻只能在两个设备之间传送数据,这就使系统总体数据传输的效率和速度受到限制。
多总线结构
双总线结构:这种结构的特点就是将速度较低的I/O设备从单总线上分离出来,形成主存总线和I/O总线分开的结构。图中的通道是一个具有特殊功能的处理器,CPU将一部分的功能下放给通道,使其对I/O设备具有统一管理的功能,以完成外部设备与主存之间的数据传送,增大系统性能。但是这种结构的问题是:不是所有的I/O设备的工作速度都是一样的,不同速度的I/O放在一个总线工作会大大影响效率。
-三总线结构:
这个结构为高速I/O设备建立了一个到达主存的高速通道,称为DMA(直接存储访问)总线。这个结构中同时只能有一个总线在使用,主存总线与DMA总线不能同时访问主存,I/O总线只有在CPU执行I/O指令时才能用到。
- 三总线加强版:处理器与cache之间有一个局部总线,它将CPU和cache或者更多的局部设备连接起来。Cache控制结构不仅将cache连接到局部总线上,而且还直接连接到系统总线上,这样cache就可以通过系统总线和主存交互,而且I/O设备与主存之间的交互也不必通过CPU。还有一条扩展总线,它将局域网,SCSI等接口连接起来,并且通过这些接口又可以与各类I/O设备连接,因此可以支持很多的外接设备。
- 四总线结构:又增加了一条与系统相连的高速总线,高速总线上挂了很多高速的I/O设备,他们通过cache控制机构中的高速总线桥或者高速缓冲器与系统总线和局部总线连接,使得这些高速设备和CPU更加密切。而一些较低速度的设备则放在了扩展总线上。这种结构对于高速设备而言,自身的工作可以很少依赖CPU,同时他们又比扩展总线上的设备更加靠近CPU,可见对于高性能设备与CPU来说,各自的效率将获得很大的提高。在这种结构中,CPU,高速总线的速度以及各自的信号线的定义可以完全不同,以至于各自改变结构也不会影响高速总线的正常工作。
总线结构的几个例子
(1)传统微机总线结构
(2)VL-BUS局部总线结构
(3)PCI总线结构
(4)多层PCI总线结构
补充:
IDE、SCSI、PCI、AGP总线
计算机硬盘对应IDE总线,光驱对应SCSI总线,主板对应PCI总线,显卡对应AGP总线。一般来说,按照总线在计算机中的位置可以分为机器内部总线和机器外设总线两类。
机器内部总线:
计算机内部各部件通讯的总线,按照发展的过程分为以下几种:ISA总线、EISA总线、VESA总线、PCI总线和AGP总线。ISA总线是用于286计算机的总线标准,EISA总线是用于386计算机的总线标准,VESA是用于486计算机的总线标准,PCI总线是用于586计算机及更高机型的总线标准,前三种总线已经被淘汰。AGP总线只负责控制芯片和AGP显卡之间的指令、数据和地址的传输,可以和PCI总线共存。机器外设总线:
计算机内部与外设进行通讯的总线,分为IDE总线、SCSI总线和USB总线。IDE总线是PC机上用得最多的总线,其造价比较便宜。SCSI总线的速度比IDE总线要快得多,不过造价比较贵。IDE总线和SCSI总线一般只是用于硬盘、光驱和扫描仪等,而USB总线则可以用于更多的外设,且速度更快。一般来说,这三种外设总线是不可以混合使用的,但是如果有总线转换器则可以在一定程度上混合使用,如SCSI总线就有向IDE总线进行转换的转换器。
十五、可靠性与可用性
1. 可靠性
指的是软件产品与在规定的一段时间内和规定的条件下维持其性能水平有关的能力,是一个系统对于给定时间间隔内、在给定条件下无失效运作的概率。它的子特性包括:成熟性、容错性、易恢复性,对于软件可靠性与软件潜在错误的数量、位置有关,并且与软件产品的使用方式有关,对于软件产品的开发方式并不能决定软件产品的可靠性。可靠性用MTTF/(1 + MTTF)来度量。
2. 可用性
指的是软件在特定使用环境下为特定用户用于特定用途时所具有的有效性。也是指在给定的时间点上,一个系统正确运作的概率。可用性用MTBF/(1 + MTBF)来度量。
3. 可维护性
指的是与软件维护的难易程度相关的一组软件属性。
4. 可伸缩性
指的是是否可以通过运行更多的实例或者采用分布式处理来支持更多的用户。
系统可用性计算方式
现实世界中的系统往往是由若干模块组合而成。其实,各个模块之间的关系无非“串联”和“并联”两种(与串并联电路类似),那么整体可用性计算方式就显而易见了。
串联模块
整体可用性计算公式如下:
A = Ax* Ay
并联模块
整体可用性计算公式如下:
A = 1 – (1 –Ax) ^ 2
相关题型:
某计算机系统由下图所示的部件构成,假定每个部件的千小时可靠度都为R,则该系统的千小时可靠度为()。
答:系统构成串联系统时,其中任何一个子系统失效就足以使系统失效,其可靠度等于各子系统可靠度的乘积。构成并联系统时,只要有一个子系统正常工作,系统就能正常工作,则系统可靠度为1- (1 - 可靠度)(1 - 可靠度)。
-
因此本题可得本系统的可靠度为:
R * (1 - (1 - R)(1 - R)) * (1 - (1 - R)(1 - R)) = R(1 - (1 - R)2)2
* 计算公式:
串联部件的可靠度 = 各部件的可靠度的乘积 并联部件的可靠度 = 1 - 部件失效率的乘积
十六、奇偶校验码
(1)什么是奇偶校验码(* 奇数个数据位出错,可以检查但无法纠正
)
英文为:Parity Check
奇偶校验码也是一种校验码,它用来检测数据传输过程中是否发生错误,是众多校验码中最为简单的一种。对于奇偶校验,是由若干位有效信息,再加上一个二进制位(校验位)组成校验码,其中奇校验“1”的个数为奇数,而偶校验“1”的个数为偶数,奇偶校验只能查错不能纠错。
它有两种校验方法:奇校验和偶校验
-
奇校验:原始码流 + 校验位 总共有奇数个1
偶校验:原始码流 + 校验位 总共有偶数个1
(2)算法
跟CRC类似,也是在原始码流后面,加上校验位。不同的是,它的校验位只有一位,要么是0,要么是1。并且它的校验码还可以放在码流的前面。
如下图:
例如下图有5组原始码,校验位的计算方法如下。红色代表校验位。
相信大家稍微动下脑子就能想明白,我就不做过多解释了。
(3)应用举例
奇偶校验码一个最为常见的应用场合就是ASCII码。
ASCII码占用一个字节,低7位是有效位,最高位用作奇偶校验。
(4)错误检测能力
只能检测出奇数个错误。
例如还是ASCII码 大写字母 A
奇校验正确码流 11000001
-
错1位 11000011 变成了偶数个1,能检测出错误
错2位 11000010 变成了奇数个1,检测不出错误
错3位 11001010 变成了偶数个1,能检测出错误
偶校验正确码流 01000001
-
错1位 01000011 变成了奇数个1,能检测出错误
错2位 01000010 变成了偶数个1,检测不出错误
错3位 01001010 变成了奇数个1,能检测出错误
补充:
奇校验一个重要的特征是产生不了全0代码,所以在实际操作过程中选择的时候要考虑到这一点。
十七、CRC循环冗余校验码
CRC循环冗余校验码是数据通信中的一种查错校验码。在进行编码时,其编码的结果由数据位 + 校验位组成,其中数据位在前,而校验位在后。
循环冗余检查对数据进行多项式计算,将计算结果附加在帧后面,接收数据的设备执行模2运算,保证数据传输的正确性和完整性。
模2除法
①不向上借位,只要除数和被除数的位数相同就可进行计算,不比较它们的大小;
②模2运算中用到了模2减法,与逻辑异或相似:
1-1=0, 1-0=1, 0-1=1 , 0-0=0,
③例子:
CRC校验的步骤
(1)选择一个生成多项式,作为对接收的帧进行除法运算时的除数,生成多项式可以写为二进制形式;
生成多项式的要求:
①最高位和最低位必须为1;
②当CRC码的任何一位发生错误时,新帧除生成多项式后余数不为0;
③不同位发生错误时,余数应该是不同的;
生成多项式转化为二进制形式:
如x5+x3+x2+1,写为二进制:101101
(2)计算CRC校验码位数k=生成多项式位数-1,在要发送的数据帧后加k个0,除第一步用生成多项式转化的二进制数(使用模2除法),得到的余数即为CRC校验码;
模2除时,余数的位数必须只比除数少一位,不能省略0
(3)把得到的校验码CRC加到原数据帧后,构成一个新数据帧发送到接收端,接收端将新帧除以之前选择的除数(模2除法),如果没有余数,则表明该数据帧在传输过程中没有出错,否则出错;
CRC校验例子
假设CRC生成多项式G(X)=X5+X4+X+1,要发送的二进制数据帧为100101110,求CRC校验码:
①把生成多项式转换为二进制数:110011;
②由生成多项式的位数为6可知,CRC校验码的位数为5,所以在数据帧后加5个0,变为100101110 00000,将这个数使用模2除法除以生成多项式110011,得到余数即CRC校验码11010;
③用得到的CRC校验码替换掉数据帧中的5个0,形成新的帧100101110 11010,将这个新帧发送给接收端;
④接收端收到新帧后,用新帧除以上面的多项式110011(模2除法),如果余数为0,该数据帧在传输过程中没有出错,否则出错;(经验证余数为0)
十八、海明校验码
一个编码系统中任意两个合法编码(码字)之间不同的二进制数位数称为这两个码字的码距,而整个编码系统中任意两个码字的最小距离就是该编码系统的码距。为了使一个系统能检查和纠正一个差错,码间最小距离必须至少是3。海明码是一种可以纠正一位差错的编码,是利用奇偶性来检错和纠错的校验方法。海明码的基本意思是给传输的数据增加r个校验位,从而增加两个合法消息(合法码字)的不同位的个数(海明距离)。假设要传输的信息有m位,则经海明编码的码字就有n = m + r位。
与循环冗余校验码(CRC)不同,CRC编码方法是在k位信息码后面再拼接r位的校验码。
重点公式:
2^k - 1 >= n + k;
求海明码所需最少的校验位数k与原信息n个数据位的关系。
十九、计算机指标
电子计算机技术指标是用来评价计算机性能和选择、使用计算机的参考数据。
电子计算机技术指标主要有以下几项:
-
(1)字长(bit)。指计算机运算机中寄存器的位数。字长越长,表示数的范围越大,即有效数字的位数越多,计算精度越高。因此,字长是表示电子计算机计算精度的指标。根据机器的不同,字长有8位、16位、32位、48位、64位等,通常大中型计算机字长是32-64位,小型机和微型机字长是8-32位。
-
(2)运算速度。表示电子计算机运算快慢程度的指标,用每秒钟所能执行的指令条数表示,单位为“次/秒” (也可用完成算术运算的平均速度表示)。
-
(3)存贮容量。指存贮器所能寄存的数字或指令的数量,即存贮器能够存贮二进制信息的能力。用存贮单元和每个单元的位数 (字长) 的乘积表示,单位用比特(一位二进的数为1比特)或字节。8个比特为1字节表示,1024字节为1K字节。巨型或大型计算机的内存容量一般为2-10兆字节左右,中、小型计算机的内存容量为几十K到1兆字节左右,微型机为4K-64K字节。
-
(4)存取周期。指存贮器进行一次完整的存取操作所需要的时间,存取周期在很大程度上决定着计算机的计算速度,它越短越好。磁芯存贮器的存取周期为零点几微秒到几微秒,半导体存贮器的存取周期为一百毫微秒到几百毫微秒。
-
(5)带宽。总线的带宽指单位时间内传输的数据总量。带宽 = 数据总量/总时间。时钟频率是其时钟周期的倒数,若时钟频率为200MHz,则时钟周期为1/200MHz。5个时钟周期的总时间为5/200MHz,假设数据总量为32bit,则总带宽 = 32bit/(5/200MHz)= 1280Mbit/s = 168MB/s。
相关内容:
64位和32位微处理器中,通用寄存器的位数,数据总线的宽度,能同时进行运算的位数,均为2倍关系。数据总线宽度一般与字长一致。(数据总线是用于在计算机中传送数据的总线,它可以把CPU的数据传送到存储器或输入输出接口等其它部件,也可以将其它部件的数据传送到CPU)。字长为32位,则数据总线的位数也为32位。地址总线是传送地址信息的总线,根据地址总线的多少可以确定内存容量的大小,同样根据内存容量的大小也可以反向推出地址总线的宽度。例如:内存大小为4GB,则根据4GB = 2^32B可得地址长度为32位的二进制数,所以地址总线的宽度也需要32位。MIPS = 指令数 /(执行时间 * 1000000) MIPS =主频 / (CPI * 1000000)
MIPS:每秒执行百万条指令数(意思就是每秒cpu能算多几个百万的指令)
CPI:每条指令的平均时钟周期数(意思就是每条指令花费的时钟周期数)