计算机组成原理报告.docx
《计算机组成原理报告.docx》由会员分享,可在线阅读,更多相关《计算机组成原理报告.docx(15页珍藏版)》请在冰豆网上搜索。
![计算机组成原理报告.docx](https://file1.bdocx.com/fileroot1/2023-2/4/35056871-8124-4be4-96f3-1c4e2bc214c6/35056871-8124-4be4-96f3-1c4e2bc214c61.gif)
计算机组成原理报告
常见现代微处理器体系结构分析及其发展趋势
1.Intel系列微处理器体系结构分析—Intel虚拟技术(VT)
众所周知,Intel在其CPU采用许多自己的技术。
在服务器领域或是桌面级这层Intel基本一家独大。
然而,当我接触了Intel的虚拟技术后,我被它吸引了。
它让我感觉它是如此有用又是如此神秘。
1.1VT技术概述
虚拟技术最早出现在386机器中。
当时的DOS操作系统不支持多任务,使用V86模式可以创建几个并行虚拟8086计算机来运行多个DOS程序从而实现DOS下的多任务。
在虚拟技术(VT)中,你可以同时运行多个操作系统,多个程序运行在同一个操作系统中,而且每一个操作系统都运行在一个虚拟的CPU或是虚拟主机上。
这种技术可以让多个CPU同时运行像一个CPU工作起来一样,从而使得计算机同时运行多个操作系统成为可能
并不是所有的CPU都支持VT技术,CPU的虚拟技术支持可以用软件SecurAble工具开检测。
1.2VT技术的优势
通过VMwareworkstation、VirtualPC等软件可以达到虚拟多个操作系统的目的,这些软件可以利用单CPU模拟多CPU并行,可以实现单机同时运行多个操作系统(OS),已达到处理多任务的目的。
然而传统的软件虚拟化严重占系统资源,无法提高工作效率。
纯软件虚拟化解决方案存在很多限制。
“客户”操作系统很多情况下是通过VMM(VirtualMachineMonitor,虚拟机监视器)来与硬件进行通信,由VMM来决定其对系统上所有虚拟机的访问。
(注意,大多数处理器和内存访问独立于VMM,只在发生特定事件时才会涉及VMM,如页面错误。
)在纯软件虚拟化解决方案中,VMM在软件套件中的位置是传统意义上操作系统所处的位茫。
如处理器、内存、存储、显卡和网卡等)的接口,模拟硬件环境。
这种转换必然会增加系统的复杂性。
硬件虚拟化可以支持64位系统,使用大容量内存,提高效率。
CPU的虚拟化技术是一种硬件方案,支持虚拟技术的CPU带有特别优化过的指令集来控制虚拟过程,通过这些指令集,VMM会很容易提高性能,相比软件的虚拟实现方式会很大程度上提高性能。
虚拟化技术可提供基于芯片的功能,借助兼容VMM软件能够改进纯软件解决方案。
由于虚拟化硬件可提供全新的架构,支持操作系统直接在上面运行,从而无需进行二进制转换,减少了相关的性能开销,极大简化了VMM设计,进而使VMM能够按通用标准进行编写,性能更加强大。
1.3VT技术的工作原理
VT的目的是在尽可能最小化程序员痛苦的同时尽可能多的增加“virtualizationholes”(虚拟化孔)。
这种解决方案中,VT-X针对X86而VT-i针对Itanium,分别引入了一种新的模式针对不同的CPU.这里我们主要来看看VT-X。
这种新的模式被称为VMX,并且引入了一个虚拟化机监控器VMM运行于其中。
它被设定在R0级别下,你可以认为是R-1级或者看成是在环的旁边运行。
主机操作系统和所有的程序在VMX模式中运行,与此同时VMM运行在VMX根模式中。
任何一个运行在VMX模式下的操作系统,都拥有所有运行于非VT系统中的一般操作系统的功能和特性。
它也处在R0级别中,与平常一样有权利处理每一件事情,而且并不知道有什么东西正在它的旁边运行。
当情况得到授权,CPU进入VMX根模式,VMM就可以切换到其他一个运行在另一VMX实例的操作系统。
这些切换被称做VM登录和VM退出。
下面是WMX模式切换即WMX转换的示意图
VT技术所表现出来的不可思议的地方就在于它将从VMX模式到VMX根模式(或从VMX根模式到VMX模式)的登录和退出处理易于操作。
一旦主机操作系统被涉及到,那它一定是独自处在自己的世界里的,你必须保存虚拟化世界的完整状态并当你返回时重新载入它。
虽然在VT里还有很多事物要去处理,但它被设计为一项任务,所以客观地说它实际是一个简单而并不费力的进程。
因为每一个操作系统实例都在正确的位置运行,所以前面所提到的4个问题也就不存在了。
相关联的工作区也不再需要,与此有关的系统开销没有了。
这些能有效提高速度。
但这些并非免费,只是付出的代价要少很多。
启动一个新的主机操作系统,你需为其留出一块4kB的存储区并将它传递给一个VMPTLRD指令。
这块区域将用来存储该系统实例不被激活时的所有状态和重要Bit位。
只要该操作系统实例存在,则这块区域一直有效,直到在其上运行一条VMCLEAR指令。
这样就设立了一个虚拟化机实例。
如果你想要把控制权交给虚拟化机,你要么登录VMX非根模式或简单一点,运行VMX模式即可。
这些提到的VM登录指令就是VMLAUNCH和VMRESUME,两者并没有太大的区别。
VMRESUME指令只是简单地从刚开始已经初始化的4kB存储区里载入CPU状态,并把控制权交给主机操作系统。
VMLAUNCH做的也是同样的工作,但它会启动一个虚拟化机控制构件VMCS,它包含一些设立VM的现场背后的记录,因为这需花费一些时间,所以人们尽量避免在并发登录时使用VMLAUNCH.
从这一点来看,主机操作系统开始了它的愉快之旅,尽可能地运转,毫无察觉是否有其他东西正在它的一旁运行。
正如过去所计划的一样,它存在于自己的世界里,全速运行,或接近全速。
唯一的问题是你如何打破这一切美好的景象而将它关闭到一边,以使得机器里的其他操作系统能真正运行。
这就是VT技术所体现出来的复杂的一面?
?
VMCS中一些特别的位映像。
这些位映像是一些32位的字段,每一个Bit位标志一个事件。
如果某个事件被触发,则对应的Bit位被置位,CPU触发一条VM退出指令,并将控制权返还给运行在VMX根模式下的VMM.VMM可做任何想做的事,然后将VMRESUME指令传递给下一个操作系统,或刚离开的那个操作系统。
这个被启动的操作系统同样很好地运行着,直到触发另一条VM退出指令。
如此这样以每秒上千次的速度重复着。
什么能触发这些指令呢?
它们可以是引脚信号、CPU、异常和页面错误这些平台事件,所有这些都会触发VM退出指令。
VT技术的完美之处在于它有很强的适应性,另一个与此类似之处就是在调试程序中设置断点,你可在每个事件上都设置一个,或者一个也不设置,这都取决于你自己。
引脚信号事件要做的是当有一个内部中断或一个不可屏蔽中断发生时,则触发退出指令。
而CPU事件,则是当你设置任意Bit位在某一字段,当相应的CPU状态接收到它时,则触发退出指令。
虽然大多数指令需要去设置,但也有一些指令无条件地引发VM退出指令。
这是在一个非常细小的层面上控制VM,允许每当你需要时登录和退出。
异常位映像也是一些32位的字段,每个Bit位标志每个32位指令地址的异常情况。
如果Bit位被设定并有一个异常被抛出,它就会引发VM退出指令。
如果Bit位是空的或没有异常,那么主机操作系统则继续它的快乐之旅,与平常一样。
这是一种从VMX模式退出而进入VMX根模式的系统开销非常低的方法。
最后还有页面错误退出,它与异常退出十分相像,只不过它用两个32位字段来控制。
这些字段内的Bit位对每一个可能出问题的页面错误代码进行映像,因此你可细心地从中挑选从哪里退出。
同样,它也是基于很细小的层面,系统开销也很低。
在计算机里,VT工作在一个比传统的R0环更有特权的级别中。
任何一个主机操作系统都可在没有改变的旧有架构下运行,并且不知道一个控制程序在控制它们。
当遭遇到某些用户设置的触发器,控制权将被转交给运行在更高级别的VMX根模式上的VMM.因为这是一种被动触发事件,而不需被积极监视,因此系统开销降到了最低限。
VT技术使得安装和卸载那些比以往VM模式更稳定的运行环境变得简单。
如果你需运行虚拟化系统,没有理由不用一个拥有Verpool功能的CPU去实现它,而软件虚拟化机会逐渐不被人关注。
但是,这种做法还得付出代价。
每一次登录意味着建立4kB的存储区域,每一次退出要向这4kB存储区内写入数据。
这看上去有些耗费过多,可与那些较老的方式比较,它的速度还是惊人的快。
1.4VT的前景
以下是英特尔虚拟化技术发展线路图
展到其他设备的,从VT-i/VT-x到VT-d就非常体现了这个过程,对于关注I/O性能的企业级应用而言,完成了处理器的虚拟化和I/O的虚拟化,整个平台的虚拟化就接近完成了,因此在未来,Intel将会持续地开发VT-d技术,将各种I/O设备中加入虚拟化特性,从而提供一个强大的虚拟化基础架构。
2.Arm处理器系列体系结构分析—ARM异常处理
众所周知,机器在运行中过程中不可能始终正常,ARM处理器也不意外。
因此,怎么处理这些异常呢。
事实上,ARM处理器有完整的一套异常处理机制,下面我将仔细讲到。
2.1异常的基本概念及产生
所谓异常即是指任何打断处理器正常执行,并且迫使处理器进入一个由有特权的特殊指令执行的事件。
总体上异常可以分为两类:
同步异常和异步异常。
同步异常是由内部事件引起的,比如当造成被零除的运算时就会引发一个异常。
异步异常时由外部事件引起的,比如串口和网口的等通讯模块,接收数据包产生异常。
具体看,异常可分为4类:
中断、陷井、故障和终止
类别
原因
异步/同步
返回行为
中断
来自I/O设备的信号
异步
总是返回到下一条指令
陷井
有意的异常
同步
总是返回到下一条指令
故障
潜在可恢复的错误
同步
可能返回到当前指令
终止
不可恢复的错误
同步
不会返回
2.2异常向量和优先级
只要产生异常就会导致正常和程序流程被临时停止,例如外围中断服务程序。
在异常被处理前,当前的处理器状态必须被保存,以便处理程序完成后,最后的程序可以被恢复.
以下是异常向量表。
地址
异常类型
异常模式
优先级
0x00000000
复位
特权模式
1
0x00000004
未指定的指令
UND终止模式
6
0x00000008
软件中断
特权模式
6
0x0000000C
指令预取终止
终止模式
5
0x00000010
数据访问终止
终止模式
2
0x00000014
保留
未使用
未使用
0x00000018
外部中断请求
IRQ模式
4
0x0000001C
快速中断请求
FIQ模式
3
2.3异常处理
当异常产生时,有如下步骤
1.拷贝CPSR到SPSR_
2.设置适当的CPSR位:
a.改变处理器状态进入ARM态
b.改变处理器模式进入相应的异常模式
c.设置中断禁止位禁止相应中断(如需要)
3.保存返回地址到LR_
4.设置PC为相应的异常向量
当返回时,异常处理需要
1.从SPSR_恢复CPSR
2.从LR_恢复PC
3.Note:
这些操作只能在ARM态执行.
R14_=ReturnLink
SPSR_=CPSR
CPSR[4:
0]=ExceptionModeNumber
CPSR[5]=0
当运行于ARM状态时
IF==ResetorFIQthen
当响应FIQ异常时,禁止新的FIQ异常
CPSR[6]=1;
CPSR[7]=1;
PC=ExceptionVectorAddress
2.4退出异常
当异常结束时,异常处理程序必须:
1.将LR(R14)中的值减去偏移量后存入PC,偏移量根据异常的类型而有所不同;
2.将SPSR的值复制回CPSR;
3.清零在入口置位的中断禁止标志。
特别当恢复CPSR的动作会将T、F和I位自动恢复为异常发生前的值。
一个简单的例子,当从用户模式到FIQ模式
进入/退出异常概述
3.IBM的PowerPC体系结构分析—PowerPC应用级寄存器
3.1PowerPC基本概述
PowerPC是Apple、IBM和摩托罗拉(Motorola)联盟(也称为AIM联盟)的产物,它基于POWER体系结构,但是与POWER又有很多的不同。
例如,PowerPC是开放的,它既支持高端的内存模型,也支持低端的内存模型,而POWER芯片是高端的。
最初的PowerPC设计也着重于浮点性能和多处理能力的研究。
当然,它也包含了大部分POWER指令。
很多应用程序都能在PowerPC上正常工作,这可能需要重新编译以进行一些转换。
从2000年开始,摩托罗拉和IBM的PowerPC芯片都开始遵循BookE规范,这样可以提供一些增强特性,从而使得PowerPC对嵌入式处理器应用(例如网络和存储设备,以及消费者设备)更具有吸引力。
3.2PowerPC架构优势
PowerPC体系结构的最大一个优点是它是开放的:
它定义了一个指令集(ISA),并且允许任何人来设计和制造与PowerPC兼容的处理器;为了支持PowerPC而开发的软件模块的源代码都可以自由使用。
最后,PowerPC核心的精简为其他部件预留了很大的空间,从新添加缓存到协处理都是如此,这样可以实现任意的设计复杂度。
而且,PowerPC处理器有非常强的嵌入式表现,因为它具有优异的性能、巨大的数据吞吐量、较低的能量损耗以及较低的散热量。
同时,PowerPC处理器设备有高稳定性和高可靠性,设备能可靠稳定运行在-40℃-105℃。
PowerPC架构具有很强稳定性能,高可靠性,更长的产品寿命周期(通常10到15年以上),苛刻条件下,芯片具有很强健壮性,适合工业级应用。
3.3PowerPC应用级寄存器
PowerPC的应用级寄存器分为三类:
通用寄存器、浮点寄存器和浮点状态和控制寄存器和专用寄存器。
接下来分别看一下这三类寄存器。
a.通用寄存器(GPR)
用户指令集体系结构(BookI)规定,所有实现都有32个GPR(从GPR0到GPR31)。
GPR是所有整数操作的源和目的,也是所有加载/存储操作的地址操作数的源。
GPR还提供对SPR的访问。
所有GRP都是可用的,只有一种情况例外:
在某些指令中,GPR0只是代表数值0,而不会去查找GPR0的内容。
b.浮点寄存器(FPR)
BookI规定,所有实现都有32个FPR(从FPR0到FPR31)。
FPR是所有浮点操作的源和目的操作数,可以存放32位和64位的有符号和无符号整数,以及单精度和双精度浮点数。
FPR还提供对FPSCR的访问。
注意,嵌入式微处理器实现时经常不提供对浮点指令集的直接硬件支持,或者只是提供一个附加浮点硬件的接口。
很多嵌入式应用程序很少或者根本不需要浮点算法,而当需要的时候,对PowerPC浮点指令执行进行软件仿真就足够了。
在嵌入式微处理器中,硬件中省去浮点(支持)而为实现带来的芯片面积和功率的减少是至关重要的。
浮点状态和控制寄存器(FPSCR)捕获浮点操作的状态和异常结果,FPSCR还具有控制位,以支持特定的异常类型和对四种舍入模式之一的选择。
对FPSCR的访问要通过FPR。
c.专用寄存器(SPR)
SPR给出处理器核心内部资源的状态并对其进行控制。
不需要系统服务的支持就可以由应用程序读写的SPR包括计数寄存器、链接寄存器和整型异常寄存器)。
需要系统服务的支持才可以由应用程序读写的SPR包括时基和其他各种可能支持的计时器。
(1)指令地址寄存器(IAR)这个寄存器就是程序员们所熟知的程序计数器或者指令指针。
它是当前指令的地址。
这实际上是一个伪寄存器,用户只能通过“branchandlink”指令才能直接使用这个寄存器。
IAR主要是由调试器使用,显示将要被执行的下一条指令。
(2)链接寄存器(LR)这个寄存器存放的是函数调用结束处的返回地址。
某些转移指令可以自动加载LR到转移之后的指令。
每个转移指令编码中都有一个LK位。
如果LK为1,转移指令就会将程序计数器移为LR中的地址。
而且,条件转移指令bclr转移到LR中的值。
(3)定点异常寄存器(XER)这个寄存器存放整数运算操作的进位以及溢出信息。
它还存放某些整数运算操作的进位输入以及加载和存储指令(lswx和stswx)中传输的字节数。
(4)计数寄存器(CTR)这个寄存器中存放了一个循环计数器,会随特定转移操作而递减。
条件转移指令bcctr转移到CTR中的值。
(5)条件寄存器CR)这个寄存器分为八个字段,每个字段4位。
很多PowerPC指令将指令的第31位编码为Rc位,有一些指令要求Rc值等于1。
当Rc等于1且进行整数操作时,CR字段0被设置来表示指令操作的结果:
相等(Equal,EQ),大于(GreaterThan,GT),小于(LessThan,LT),以及和溢出(SummaryOverflow,SO)。
当Rc等于1且进行浮点操作时,CR字段1被设置用来表示FPSCR中异常状态位的状态:
FX、FEX、VX和OX。
任何一个CR字段都可以是整数或者浮点比较指令的目标。
CR字段0还被设置用来表示条件存储指令(stwcx或者stdcx)的结果。
还有一组指令可以操纵特定的CR位、特定的CR字段或者整个CR,通常为了测试而将几个条件组合到同一个位中。
(6)处理器版本寄存器(PPVR)PVR是一个32位只读寄存器,标识处理器的版本和修订级别。
处理器版本由PowerPC体系结构过程分配。
修订级别由实现定义。
需要有特权才能访问PVR,所以应用程序只能在操作系统函数的帮助下才可以确定处理器版本。
3.4PowerPC前景
虽然苹果电脑全面由PowerPC倒向Intel,但这并不意味着PowerPC就不如Intel,就会被淘汰。
事实上,由于IBM在服务器市场一家独大,因此PowerPC的价格被IBM所控制。
因此,为了成本问题,苹果转投Intel阵营。
IBM“BlueGene/L”超越日本NEC公司的地球模拟器,成为世界上速度最快的超级计算机。
在Linpack基准测试中,IBM“BlueGene/L”系统的性能达到36.01Tflop,刷新了地球模拟器在2002年创造的35.86Tflop的世界记录。
在全球排名前10位的超级计算机中,共有5台采用了Power架构,比第二位高出一倍。
因此,PowerPC的前景还是很光明的,但是与Intel之争究竟鹿死谁手,只能由市场决定。
4.Intel处理器架构与RISC处理器架构区别
Intel处理器都采用的是CISC架构,即复杂指令集,而RISC处理器,即精简指令集,是在CISC基础上发展起来的。
有人对CISC机进行测试表明,各种指令的使用频度相当悬殊,最常使用的是一些比较简单的指令,它们仅占指令总数的20%,但在程序中出现的频度却占80%。
目前它们有如下差异:
(1)指令系统:
RISC设计者把主要精力放在那些经常使用的指令上,尽量使它们具有简单高效的特色。
对不常用的功能,常通过组合指令来完成。
因此,在RISC机器上实现特殊功能时,效率可能较低。
但可以利用流水技术和超标量技术加以改进和弥补。
而CISC计算机的指令系统比较丰富,有专用指令来完成特定的功能。
因此,处理特殊任务效率较高。
(2)存储器操作:
RISC对存储器操作有限制,使控制简单化;而CISC机器的存储器操作指令多,操作直接。
(3)程序:
RISC汇编语言程序一般需要较大的内存空间,实现特殊功能时程序复杂,不易设计;而CISC汇编语言程序编程相对简单,科学计算及复杂操作的程序设计相对容易,效率较高。
(4)中断:
RISC机器在一条指令执行的适当地方可以响应中断;而CISC机器是在一条指令执行结束后响应中断。
(5)CPU:
RISCCPU包含有较少的单元电路,因而面积小、功耗低;而CISCCPU包含有丰富的电路单元,因而功能强、面积大、功耗大。
(6)设计周期:
RISC微处理器结构简单,布局紧凑,设计周期短,且易于采用最新技术;CISC微处理器结构复杂,设计周期长。
(7)用户使用:
RISC微处理器结构简单,指令规整,性能容易把握,易学易用;CISC微处理器结构复杂,功能强大,实现特殊功能容易。
(8)应用范围:
由于RISC指令系统的确定与特定的应用领域有关,故RISC机器更适合于专用机;而CISC机器则更适合于通用机。
5.苹果ipad处理器架构
苹果ipad一代采用的是三星电子公司生产的A4处理器,为ARMCortex-A8架构;苹果iPad二代采用的是三星电子公司生产的A5双核处理器,为ARMCortex-A9架构;苹果ipad三代采用的是三星电子公司生产的双核A5X,也为ARMCortex-A9架构,只是将GPU升级到了四核。
由此显然可以看出,苹果ipad均采用ARM架构。
6.苹果电脑MAC架构
以下是Macintosh电脑一览表
型号
所采用处理器架构
AppleI
PowerPC
AppleII
PowerPC
AppleIII
PowerPC
Lisa
PowerPC
Macintosh
PowerPC
PowerMacintosh(PowerMac)
PowerPC
PowerMacG3
PowerPC
PowerMacG4
PowerPC
PowerMacG4Cube
PowerPC
PowerMacG5
PowerPC
eMac
PowerPC
PowerBook
PowerPC
iBookG3/G4
PowerPC
Xserve
PowerPC
iMac
Intel
Macmini
Intel
MacBookPro
Intel
MacBook
Intel
MacPro
Intel
MacBookAir
Intel
由上表可以看出,苹果MAC以前都采用PowerPC架构,自从iMac上市起,苹果电脑以后均采用的是Intel的处理器.其实,道理也很简单,当初PowerPC是Apple、IBM、Motorola三家联盟一起推出的,而PowerPC在某些方面确实也优于Intel处理器,因此刚开始苹果力推PowerPC。
而之后,苹果与PowerPC渐行渐远,PowerPC被IBM一家控制。
而由于垄断原因,PowerPC价格较高,于是苹果果断因为利益问题转投Intel。
而且,现在不少人都认为苹果转向Intel是一个重大的错误。