一、CISC VS RISC
RISC(reduced instruction set computer,精简指令集计算机)是一种执行较少类型计算机指令的微处理器.这样一来,它能够以更快的速度执行操作。因为计算机执行每个指令类型都需要额外的晶体管和电路元件,计算机指令集越大就会使微处理器更复杂,执行操作也会更慢。
纽约约克镇IBM研究中心的John Cocke证明,计算机中约20%的指令承担了80%的工作,他于1974年提出了RISC的概念。
CISC(complexinstruction set computer,复杂指令集计算机) 除了RISC,任何全指令集计算机都使用的是复杂指令集计算(CISC)。
目前常见使用RISC的处理器包括DEC Alpha、ARC、ARM、MIPS、PowerPC、SPARC和SuperH等。
常见使用CISC的处理器主要有X86.
RISC和CISC的区别:
(1) 指令系统:RISC 设计者把主要精力放在那些经常使用的指令上,尽量使它们具有简单高效的特色。对不常用的功能,常通过组合指令来完成。因此,在RISC 机器上实现特殊功能时,效率可能较低。但可以利用流水技术和超标量技术加以改进和弥补。而CISC 计算机的指令系统比较丰富,有专用指令来完成特定的功能。因此,处理特殊任务效率较高。
(2) 存储器操作:RISC 对存储器操作有限制,使控制简单化;而CISC 机器的存储器操作指令多,操作直接。
(3) 程序:RISC 汇编语言程序一般需要较大的内存空间,实现特殊功能时程序复杂,不易设计;而CISC 汇编语言程序编程相对简单,科学计算及复杂操作的程序设计相对容易,效率较高。 (4) 中断:RISC 机器在一条指令执行的适当地方可以响应中断;而CISC 机器是在一条指令执行结束后响应中断。
(5) CPU芯片电路:RISC CPU 包含有较少的单元电路,因而面积小、功耗低;而CISC CPU 包含有丰富的电路单元,因而功能强、面积大、功耗大。
(6) 设计周期:RISC 微处理器结构简单,布局紧凑,设计周期短,且易于采用最新技术;CISC 微处理器结构复杂,设计周期长。
(7) 用户使用:RISC 微处理器结构简单,指令规整,性能容易把握,易学易用;CISC微处理器结构复杂,功能强大,实现特殊功能容易。
(8) 应用范围:由于RISC 指令系统的确定与特定的应用领域有关,故RISC 机器更适合于专用机;而CISC 机器则更适合于通用机。
1903年12月28日,在布达佩斯诞生了一位神童,这不仅给这个家庭带来了巨大的喜悦,也值得整个计算机界去纪念。正是他,开创了现代计算机理论,其体系结构沿用至今,而且他早在40年代就已预见到计算机建模和仿真技术对当代计算机将产生的意义深远的影响。他,就是约翰·冯·诺依曼(John Von Neumann)。
最简单的来说 他的精髓贡献是2点:2进制思想与程序内存思想。
1946年6月美籍匈牙利科学家冯诺依曼教授发表了“电子计算机装置逻辑结构初探”的论文。并设计出了第一台“存储程序”计算机EDVAC(埃德瓦克),即离散变量自动电子计算机(The ElectronicDiscrete Variable Automatic Computer).这种结构的计算机为现代计算机体系结构奠定了基础,成为“冯诺依曼体系结构”。
冯诺依曼理论的要点是:数字计算机的数制采用二进制;计算机应该按照程序顺序执行。
其主要内容是:
1.计算机由控制器、运算器、存储器、输入设备、输出设备五大部分组成。
2.程序和数据以二进制代码形式不加区别地存放在存储器中,存放位置由地址确定。
3.控制器根据存放在存储器中地指令序列(程序)进行工作,并由一个程序计数器控制指令地执行。控制器具有判断能力,能根据计算结果选择不同的工作流程。
人们把冯诺依曼的这个理论称为冯诺依曼体系结构。从EDVAC(ENIVAC并不是冯诺依曼体系)到当前最先进的计算机都采用的是冯诺依曼体系结构。所以冯诺依曼是当之无愧的数字计算机之父。
根据冯诺依曼体系结构构成的计算机,必须具有如下功能:
把需要的程序和数据送至计算机中。
必须具有长期记忆程序、数据、中间结果及最终运算结果的能力。
能够完成各种算术、逻辑运算和数据传送等数据加工处理的能力。
能够根据需要控制程序走向,并能根据指令控制机器的各部件协调操作。
能够按照要求将处理结果输出给用户。
为了完成上述的功能,计算机必须具备五大基本组成部件,包括:
输入数据和程序的输入设备;
记忆程序和数据的存储器;
完成数据加工处理的运算器;
控制程序执行的控制器;
输出处理结果的输出设备 。
哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。哈佛结构一种并行体系结构,它的主要特点。
将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个独立的存储器,每个存储器独立编址、独立访问。与两个存储器相对应的是系统的4条总线:程序的数据总线与地址总线,数据的数据总线与地址总线。这种分离的程序总线和数据总线可允许在一个机器周期内同时获得指令字(来自程序存储器)和操作数(来自数据存储器),从而提高了执行速度,提高了数据的吞吐率。又由于程序和数据存储器在两个分开的物理空间中,因此取指和执行能完全重叠。中央处理器首先到程序指令存储器中读取程序指令内容,解码後得到数据地址,再到相应的数据存储器中读取数据,并进行下一步的操作(通常是执行)。程序指令存储和数据存储分开,可以使指令和数据有不同的数据宽度。
哈佛结构的计算机由CPU、程序存储器和数据存储器组成,程序存储器和数据存储器采用不同的总线,从而提供了较大的存储器带宽,使数据的移动和交换更加方便,尤其提供了较高的数字信号处理性能。
哈佛结构与冯.诺曼结构处理器相比,处理器有两个明显的特点:使用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存;使用独立的两条总线,分别作为CPU与每个存储器之间的专用通信路径,而这两条总线之间毫无关联。
改进的哈佛结构,其结构特点为:
1、使用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存,以便实现并行处理;
2、具有一条独立的地址总线和一条独立的数据总线,利用公用地址总线访问两个存储模块(程序存储模块和数据存储模块),公用数据总线则被用来完成程序存储模块或数据存储模块与CPU之间的数据传输;
哈佛结构的微处理器通常具有较高的执行效率。其程序指令和数据指令分开组织和储存的,执行时可以预先读取下一条指令。目前使用哈佛结构的中央处理器和微控制器有很多,除了Microchip公司的PIC系列芯片,还有摩托罗拉公司的MC68系列、Zilog公司的Z8系列、ATMEL公司的AVR系列和安谋公司的ARM9、ARM10和ARM11。TI的DSP等。
三、流水线
流水线处理概述
CPU主要工作方式:
顺序
重叠
流水
和铺地板的原理相似…
设指令工作方式分成取指令、分析、执行指令
若各阶段执行时间相等,则共需3n t
优点:控制简单;
缺点:速度慢,机器各部件的利用率很低。
重叠(Overlap):在两条相近指令的解释过程中,某些不同解释阶段在时间上存在重叠部分。
包括一次重叠、先行控制技术和多操作部件并行。
将相邻两条指令的重叠时间再往前提前一个阶段;T=3×t+(n-1)×t=(n+2)×t
一次重叠:把取指令操作隐含在分析、执行指令过程中,则在任何时候只允许上条指令“执行”与下条指令“分析”相重叠。 T=(n+1)×t
若各段时间不等时,有实际执行时间:
先行控制:分析部件和执行部件能分别连续不断地分析和执行指令,预取和缓冲相结合的技术 ,通过对指令流和数据流的先行控制,使指令分析器和执行部件能尽量连续并行工作。
执行时间:
多操作部件并行:采用有多个功能部件的处理机,把ALU的多种功能分散到几个具有专门功能的部件中,这些功能部件可以并行工作,使指令流出速度大大提高。
先行控制:现代计算机指令系统是复杂的,“分析”和“执行”所需要的时间往往相差很大,从而造成功能部件的浪费,因此,需要采用先行控制技术。
分析指令和执行指令时间不等时的一次重叠方式
采用先行缓冲栈是指令执行过程的一种表示方法
先行控制:
一般采用先行缓冲栈的方式实现:
一般设置四种缓冲栈:
先行指令缓冲栈
当主存比较忙时,指令分析器能够从先行指令缓冲栈中得到所需指令。
先行操作栈
对于条件转移等使用。
先行读书栈
主存储器和运算器之间的缓冲存储器,用来平缓运算器和主存储器之间的工作。
后行写数栈
当前没有完全写道主存的数据可以暂存到写数栈
先行控制的处理机结构:
先行控制中的缓冲深度设计:
通过一种极端情况计算举例:
假设先行指令缓冲栈已经完全充满,缓冲深度是D1。
此时指令缓冲栈输出端,指令流出速度最快,而输入端,流入最慢
假设指令序列的最大长度是L1,平均分析一条指令的时间是t1
而此时更坏的是取指令很慢,平均取一条指令的时间是t2
假设先行控制栈充满到被取空的过程中指令分析条数是L1
则此时有: L1t1 = (L1-D1)t2
1989年推出的i486处理器引入了五级流水线。这时,在CPU中不再仅运行一条指令,每一级流水线在同一时刻都运行着不同的指令。这个设计使得i486比同频率的386处理器性能提升了不止一倍。五级流水线中的取指阶段将指令从指令缓存中取出(i486中的指令缓存为8KB);第二级为译码阶段,将取出的指令翻译为具体的功能操作;第三级为转址阶段,用来将内存地址和偏移进行转换;第四级为执行阶段,指令在该阶段真正执行运算;第五级为退出阶段,运算的结果被写回寄存器或者内存。由于处理器同时运行了多条指令,大大提升了程序运行的性能。
处理器一般由如下功能单元组成:
取指单元
译码单元
执行单元
Load/store单元(load用于从内存中取数据,而STORE用于存数据到内存)
例外/中断单元
电源管理单元
流水线通常由取指、译码、执行及Load/Store等单元组成。各单元按图所示的几个步骤循环重复自身工作。
流水线的含义:
与工厂生产线类似,将一件工作分成若干个固定的工序进行。
cpu流水线技术是一种将指令分解为多步,并让不同指令的各步操作重叠,从而实现几条指令并行处理,以加速程序运行过程的技术。指令的每步有各自独立的电路来处理,每完成一步,就进到下一步,而前一步则处理后续指令。(原理和生产流水线一样)
根据之前描述的基础,指令进入流水线,通过流水线处理,从流水线出来的过程,对于我们程序员来说,是比较直观的。
I486拥有五级流水线。分别是:取指(Fetch),译码(D1, main decode),转址(D2, translate),执行(EX, execute),写回(WB)。某个指令可以在流水线的任何一级。
但是这样的流水线有一个明显的缺陷。对于下面的指令代码,它们的功能是将两个变量的内容进行交换。
1
2
3
XOR a, b
XOR b, a
XOR a, b
从8086直到386处理器都没有流水线。处理器一次只能执行一条指令。再这样的架构下,上面的代码执行并不会存在问题。
但是i486处理器是首个拥有流水线的x86处理器,它执行上面的代码会发生什么呢?当你一下去观察很多指令在流水线中运行,你会觉得混乱,所以你需要回头参考上面的图。
1、第一步是第一条指令进入取指阶段;
2、然后在第二步第一条指令进入译码阶段,同时第二条指令进入取指阶段;
3、第三步第一条指令进入转址阶段,第二条指令进入译码阶段,第三条指令进入取指阶段。
4、但是在第四步会出现问题,第一条指令会进入执行阶段,而其他指令却不能继续向前移动。
5、第二条xor指令需要第一条xor指令计算的结果a,但是直到第一条指令执行完成才会写回。
所以流水线的其他指令就会在当前流水级等待直到第一条指令的执行和写回阶段完成。第二条指令会等待第一条指令完成才能进入流水线下一级,同样第三条指令也要等待第二条指令完成。
这个现象被称为流水线阻塞或者流水线气泡。
常用概念:
1、流水线级数:流水线的节拍数。
2、吞吐率:单位时间内流水线能处理的任务数量。
3、最大吞吐率:流水线达到不间断流水的稳定状态后可获得的吞吐率。
4、加速比:流水方式的工作速度与等效的顺序工作方式时间的比值。
流水线指标:
1、流水技术无助于减少单个任务的处理延迟(latency),但有助于提高整体工作负载的吞吐率
2、多个不同任务同时操作, 使用不同资源
3、潜在加速比= 流水线级数
4、流水线的速率受限于最慢的流水段
5、流水段的执行时间如果不均衡,那么加速比就会降低
6、开始填充流水线的时间和最后排放流水线的时间降低加速比
低功耗嵌入式领域的ARM7就是采用3级流水线结构。
超流水
超流水线技术是通过细化的流水,提高主频。使得机器在一个周期内完成一个甚至多个操作,其实质是用空间换取时间。
超流水处理器是相对于基准处理器而言的,一般cpu的流水线是基本的指令预取,译码,执行和写回结果四级。超流水线(superpiplined)是指某型CPU内部的流水线超过通常的5~6步以上,例如Pentium pro的流水线就长达14步。将流水线设计的步(级)数越多,其完成一条指令的速度越快,因此才能适应工作主频更高的CPU。这一点我们可以用日常事例来说明,比如有5个人接力传送木头(对应一个5级的流水线),超流水是说细化该流水过程,即由10个人接力(此时为10级流水),显然完成全部任务的速度会快。相当于毛主席的一句话:人多力量大(效率高)。
超标量
超标量是指在CPU中有一条以上的流水线,并且每时钟周期内可以完成一条以上的指令,这种设计就叫超标量技术。其实质是以空间换取时间。
CPU架构是指在一颗处理器内核中实行了指令级并行的一类并行运算。这种技术能够在相同的CPU主频下实现更高的CPU吞吐率(throughput)。
四、寻址空间
一、什么叫寻址空间?
寻址空间一般指的是CPU对于内存寻址的能力。通俗地说,就是能最多用到多少内存的一个问题。数据在存储器(RAM)中存放是有规律的 ,CPU在运算的时候需要把数据提取出来就需要知道数据在那里 ,这时候就需要挨家挨户的找,这就叫做寻址,但如果地址太多超出了CPU的能力范围,CPU就无法找到数据了。CPU最大能查找多大范围的地址叫做寻址能力 ,CPU的寻址能力以字节为单位。
通常人们认为,内存容量越大,处理数据的能力也就越强,但内存容量不可能无限的大,它要受到系统结构、硬件设计、制造成本等多方面因素的制约,一个最直接的因素取决于系统的地址总线的地址寄存器的宽度(位数)。
计算机的寻找范围由总线宽度(处理器的地址总线的位数)决定的,也可以理解为cpu寄存器位数,这二者一般是匹配的。
Intel公司早期的CPU产品的地址总线和地址寄存器的宽度为20位,即CPU的寻址能力为2^20=1024*1024字节=1024K字节=1M字节;286的地址总线和地址寄存器的宽度为24位,CPU的寻址能力为2^24=1024*4*1024*4B=4*1024*4KB=16M;386及386以上的地址总线和地址寄存器的宽度为32位,CPU的寻址能力为2^32=4096M字节=4G字节。也就是说,如果机器的CPU过早,即使有很大的内存也不能得到利用,而对于现在的PⅡ级的CPU,其寻址能力已远远超过目前的内存容量。
由此推出:地址总线为N位(N通常都是8的整数倍;也说N根数据总线)的CPU寻址范围是2的N次方字节,即2^N(B)。
二、16位、32位、64位通常指的是什么?
从CPU的
相关教程
2023-04-12
2023-06-06
2023-03-24
2023-05-17
2023-05-31
2023-04-06
2023-02-21
2023-10-11
2024-09-25
2023-03-10
2023-06-07
2024-10-23
2024-10-22
2024-10-22
2024-10-21