精简指令集计算机

合集下载

risc的lrw汇编指令

risc的lrw汇编指令

risc的lrw汇编指令RISC是Reduced Instruction Set Computer(精简指令集计算机)的缩写,它是一种计算机处理器的体系结构。

LRW是一种汇编指令,主要用于加载、存储和操作数据。

在RISC架构中,指令集通常比较精简,每条指令的执行时间短,能够提供高效的指令执行。

以下是关于RISC架构中LRW汇编指令的相关参考内容:1. LRW指令介绍:- LRW指令是Load-Read-Write(加载-读取-写入)的缩写,它主要用于从内存中加载数据、在寄存器中读取数据、对数据进行操作后再写入内存。

- LRW指令在RISC架构中通常用于实现机器语言级别的存取控制,如加载数据到寄存器,读取寄存器中的数据,以及将数据写入到内存。

2. LRW指令的用法:- LRW指令的用法包括指令格式、操作数和寻址方式等。

其具体用法和汇编指令集架构相关,不同的RISC架构可能会有不同的指令格式和操作数。

- 例如,在MIPS架构中,LRW指令的格式通常为“LW $rt, offset($rs)”或者“SW $rt, offset($rs)”,其中“LW”表示从内存加载数据到寄存器,“SW”表示将寄存器中的数据写入到内存。

3. LRW指令的示例:- 下面是一个使用LRW指令的示例,演示如何将一个数值从内存加载到寄存器,进行操作后再将结果写入到内存。

```.datanum: .word 10 # 存储值为10的32位数据result: .word 0 # 用于存储计算结果的32位数据.textlw $t0, num # 从内存中读取值为10的数据到寄存器$t0 addi $t1, $t0, 5 # 将寄存器$t0中的数据加上5,并存储到$t1中sw $t1, result # 将寄存器$t1中的值写入到result所指的内存位置```在上述示例中,首先使用LW指令将存储在“num”标签所指的内存地址中的数据加载到寄存器$t0中。

计算机体系结构基础

计算机体系结构基础

计算机体系结构基础计算机体系结构是计算机科学中的一个重要概念,它定义了计算机硬件和软件之间的交互方式以及如何组织和设计计算机系统的结构。

本文将探讨计算机体系结构的基础知识,包括指令集体系结构、处理器架构和存储器层次结构。

一、指令集体系结构指令集体系结构(Instruction Set Architecture),简称ISA,是计算机体系结构的基础。

它定义了一组与硬件交互的指令集合,并规定了指令的格式、操作码和寻址方式等。

常见的指令集体系结构包括CISC (复杂指令集计算机)和RISC(精简指令集计算机)。

CISC架构的特点是指令集复杂,提供了丰富的指令集合和多种寻址方式,使得每条指令可以执行多个操作。

而RISC架构则强调指令集的精简性和规范性,将更多的工作转移到编译器层面。

两者的选择取决于需求和设计目标,如应用场景的复杂度和对计算速度和资源利用效率的要求。

二、处理器架构处理器架构(Processor Architecture)决定了计算机的运算能力和效率。

处理器是计算机体系结构的核心部件,其结构和设计方式关系到计算机性能的提升和效能的增加。

传统的处理器架构采用单指令流单数据流(SISD)方式,即每次只能执行一条操作指令和一条数据流,效率有限。

而后来出现的多指令流多数据流(MIMD)方式,则能够同时处理多条指令和数据流,提高了计算能力和效率。

此外,处理器架构还包括流水线结构和超标量结构等。

流水线结构将一条指令的执行过程划分为多个阶段,使得各个阶段可以并行进行,从而提高整体执行效率。

超标量结构则允许多条指令并行执行,更进一步提高了计算速度。

三、存储器层次结构存储器层次结构(Memory Hierarchy)是计算机体系结构中的重要组成部分,用于解决计算机存储器访问速度和容量之间的矛盾。

它按照存取速度和容量的大小将存储器划分为多个层次。

存储器层次结构的基本原理是利用不同层次存储介质的速度和容量差异来平衡。

mips指令jalr

mips指令jalr

MIPS指令jalr引言MIPS(Microprocessor without Interlocked Pipeline Stages,没有互锁管道级别的微处理器)是一种RISC(Reduced Instruction Set Computer,精简指令集计算机)架构,最初由斯坦福大学的约翰·亨尼西及其团队开发。

MIPS指令集具有良好的指令流水线特性,被广泛应用于各种领域,如嵌入式系统和高性能计算等。

本文将重点讨论MIPS指令集中的一条指令,即jalr。

二级标题一具体介绍jalr是MIPS指令集中的一条跳转指令,用于实现函数调用和返回。

jalr的全称为”Jump and Link Register”,它的作用是将当前的程序计数器PC(Program Counter)的值保存到一个指定的寄存器(链接寄存器)中,然后跳转到指定地址执行。

在跳转到指定地址后,程序可以通过链接寄存器中保存的返回地址返回到跳转之前的位置。

使用方法jalr指令的语法格式为:jalr $rd, $rs其中rd是目标寄存器,用于保存PC的值,rs是源寄存器,用于指定跳转的目标地址。

执行jalr指令后,PC的值将被保存到rd中,并跳转至rs所指定的地址。

实例展示下面是一个使用jalr指令实现函数调用和返回的示例代码:main:# 调用函数foojalr $ra, $t0...# 函数返回后继续执行的代码...foo:# 函数体...# 函数返回jr $ra在上述示例中,主函数main通过jalr指令调用了一个名为foo的函数。

在函数foo中,通过jr指令返回到调用jalr指令的下一条指令,即”函数返回后继续执行的代码”。

二级标题二jalr与jr的区别虽然jalr和jr指令都用于实现跳转,但它们在使用方式和功能上有一些不同。

使用方式•jalr指令:需要两个操作数,一个用于指定目标地址的寄存器,一个用于保存返回地址的寄存器。

mips指令集指的是什么

mips指令集指的是什么

mips指令集指的是什么MIPS是高效精简指令集计算机(RISC)体系结构中最优雅的一种;即使连MIPS的竞争对手也这样认为,这可以从MIPS对于后来研制的新型体系结构比如DEC的Alpha和HP的Precision产生的强烈影响看出来。

虽然自身的优雅设计并不能保证在充满竞争的市场上长盛不衰,但是MIPS微处理器却经常能在处理器的每个技术发展阶段保持速度最快的同时保持设计的简洁。

MIPS与MIPS指令集指令集是存储在CPU内部,对CPU运算进行指导和优化的硬程序。

拥有这些指令集,CPU就可以更高效地运行。

MIPS指令集属于精简指令集,MIPS 的所有指令都是32位,指令格式简单,而X86的指令长度不是固定的。

简单的指令和格式易于译码和流水线操作,但是代码密度不高,导致二进制文件大。

低端的CPU物理面积只有1.5平方毫米(在SOC系统里面肉眼很难找到)。

而高端的R10000处理器,第一次投放市场时可能是世界上最快的CPU,它的物理面积几乎有1平方英寸,发热近30瓦特。

虽然MIPS看起来没什么优势,但是足够的销售量使其能健康发展:1997年面市的44M的MIPS CPU,绝大多数使用于嵌入式应用领域。

MIPS(Million InstrucTIons Per Second):单字长定点指令平均执行速度Million InstrucTIons Per Second的缩写,每秒处理的百万级的机器语言指令数。

这是衡量CPU速度的一个指标。

像是一个Intel80386 电脑可以每秒处理3百万到5百万机器语言指令,即我们可以说80386是3到5MIPS的CPU。

MIPS只是衡量CPU性能的指标。

MIPS是世界上很流行的一种RISC处理器。

MIPS的意思无内部互锁流水级的微处理器(Microprocessor without interlocked piped stages),其机制是尽量利用软件办法避免流水线中的数据相关问题。

精简指令集和复杂指令集的区别

精简指令集和复杂指令集的区别

精简指令集和复杂指令集的区别RISC(精简指令集计算机)和CISC(复杂指令集计算机)是当前CPU的两种。

它们的区别在于不同的CPU设计理念和⽅法。

CPU架构是⼚商给属于同⼀系列的CPU产品定的⼀个规范,主要⽬的是为了区分不同类型CPU的重要标⽰早期的CPU全部是CISC架构,它的设计⽬的是要⽤最少的机器语⾔指令来完成所需的计算任务。

⽐如对于乘法运算,在CISC架构的CPU 上,您可能需要这样⼀条指令:MUL ADDRA, ADDRB就可以将ADDRA和ADDRB中的数相乘并将结果储存在ADDRA中。

将ADDRA, ADDRB中的数据读⼊寄存器,相乘和将结果写回内存的操作全部依赖于CPU中设计的逻辑来实现。

这种架构会增加CPU结构的复杂性和对CPU⼯艺的要求,但对于编译器的开发⼗分有利。

⽐如上⾯的例⼦,C程序中的a*=b就可以直接编译为⼀条乘法指令。

今天只有Intel及其兼容CPU还在使⽤CISC架构。

RISC架构要求软件来指定各个操作步骤。

上⾯的例⼦如果要在RISC架构上实现,将ADDRA, ADDRB中的数据读⼊寄存器,相乘和将结果写回内存的操作都必须由软件来实现,⽐如:MOV A, ADDRA; MOV B, ADDRB; MUL A, B; STR ADDRA, A。

这种架构可以降低CPU的复杂性以及允许在同样的⼯艺⽔平下⽣产出功能更强⼤的CPU,但对于编译器的设计有更⾼的要求。

复杂指令集计算机(CISC) 长期来,计算机性能的提⾼往往是通过增加硬件的复杂性来获得.随着集成电路技术.特别是VLSI(超⼤规模集成电路)技术的迅速发展,为了软件编程⽅便和提⾼程序的运⾏速度,硬件⼯程师采⽤的办法是不断增加可实现复杂功能的指令和多种灵活的编址⽅式.甚⾄某些指令可⽀持⾼级语⾔语句归类后的复杂操作.⾄使硬件越来越复杂,造价也相应提⾼.为实现复杂操作,微处理器除向程序员提供类似各种寄存器和机器指令功能外.还通过存于只读存贮器(ROM)中的微程序来实现其极强的功能,傲处理在分析每⼀条指令之后执⾏⼀系列初级指令运算来完成所需的功能,这种设计的型式被称为复杂指令集计算机(Complex Instruction Set Computer-CISC)结构.⼀般CISC计算机所含的指令数⽬⾄少300条以上,有的甚⾄超过500条.精简指令集计算机(RISC) 采⽤复杂指令系统的计算机有着较强的处理⾼级语⾔的能⼒.这对提⾼计算机的性能是有益的.当计算机的设计沿着这条道路发展时.有些⼈没有随波逐流.他们回过头去看⼀看过去⾛过的道路,开始怀疑这种传统的做法:IBM公司没在纽约Yorktown的JhomasI.Wason研究中⼼于1975年组织⼒量研究指令系统的合理性问题.因为当时已感到,⽇趋庞杂的指令系统不但不易实现.⽽且还可能降低系统性能.1979年以帕特逊教授为⾸的⼀批科学家也开始在美国加册⼤学伯克莱分校开展这⼀研究.结果表明,CISC存在许多缺点.⾸先.在这种计算机中.各种指令的使⽤率相差悬殊:⼀个典型程序的运算过程所使⽤的80%指令.只占⼀个处理器指令系统的20%.事实上最频繁使⽤的指令是取、存和加这些最简单的指令.这样-来,长期致⼒于复杂指令系统的设计,实际上是在设计⼀种难得在实践中⽤得上的指令系统的处理器.同时.复杂的指令系统必然带来结构的复杂性.这不但增加了设计的时间与成本还容易造成设计失误.此外.尽管VLSI技术现在已达到很⾼的⽔平,但也很难把CISC的全部硬件做在⼀个芯⽚上,这也妨碍单⽚计算机的发展.在CISC中,许多复杂指令需要极复杂的操作,这类指令多数是某种⾼级语⾔的直接翻版,因⽽通⽤性差.由于采⽤⼆级的微码执⾏⽅式,它也降低那些被频繁调⽤的简单指令系统的运⾏速度.因⽽.针对CISC的这些弊病.帕特逊等⼈提出了精简指令的设想即指令系统应当只包含那些使⽤频率很⾼的少量指令.并提供⼀些必要的指令以⽀持操作系统和⾼级语⾔.按照这个原则发展⽽成的计算机被称为精简指令集计算机(Reduced Instruction Set Computer-RISC)结构.简称RISC.CISC与RISC的区别  我们经常谈论有关"PC"与"Macintosh"的话题,但是⼜有多少⼈知道以Intel公司X86为核⼼的PC系列正是基于CISC体系结构,⽽ Apple 公司的Macintosh则是基于RISC体系结构,CISC与RISC到底有何区别? 从硬件⾓度来看CISC处理的是不等长指令集,它必须对不等长指令进⾏分割,因此在执⾏单⼀指令的时候需要进⾏较多的处理⼯作。

RISC原理介绍 说明

RISC原理介绍 说明

主要特点
RISC微处理器不仅精简了指令系统,采用超标量和超流水线结构;它们的指令数目只有几十条,却大大增强了并 行处理能力。如:1987年Sun Microsystem公司推出的SPARC芯片就是一种超标量结构的RISC处理器。而SGI公 司推出的MIPS处理器则采用超流水线结构,这些RISC处理器在构建并行精简指令系统多处理机中起着核心的作 用。 RISC处理器是当今UNIX领域64位多处理机的主流芯片
运行特点
RISC芯片的工作频率一般在400MHZ数量级。时钟频率低,功率消耗少,温升也少,机器不易发生故障和老化, 提高了系统的可靠性。单一指令周期容纳多部并行操作。在RISC微处理器发展过程中。曾产生了超长指令字(VL IW)微处理器,它使用非常长的指令组合,把许多条指令连在一起,以能并行执行。VLIW处理器的基本模型是 标量代码的执行模型,使每个机器周期内有多个操作。有些RISC处理器中也采用少数VLIW指令来提高处理速度 。Pentium 4微处理器体系结构完全采用RISC体系结构。
种类
[编辑本段]
目前常见使用RISC的处理器包括DEC Alpha、ARC、ARM、MIPS、PowerPC、SPARC和SuperH等。
性能特点
性能特点一:由于指令集简化后,流水线以及常用指令均可用硬件执行; 性能特点二:采用大量的寄存器,使大部分指令操作都在寄存器之间进行,提高了处理速度;
性能特点三:采用缓存—主机—外存三级存储结构,使取数与存数指令分开执行,使处理器可以完成尽可能多的 工作,且不因从存储器存取信息而放慢处理速度。 应用特点;由于RISC处理器指令简单、采用硬布线控制逻辑、处理能力强、速度快,世界上绝大部分UNIX工作 站和服务器厂商均采用RISC芯片作CPU用。如原DEC的Alpha21364、IBM的Power PC G4、HP的PA—8900、 SGI的R12000A和SUN Microsystem公司的Ultra SPARC ║。

精简指令集计算机及其特点

精简指令集计算机及其特点

精简指令集计算机及其特点精简指令集计算机是一种采用简化指令集的计算机体系结构。

与传统的复杂指令集计算机(CISC)相比,精简指令集计算机(RISC)采用更少、更简单的指令集,并且每个指令只执行基本操作。

以下将详细介绍精简指令集计算机的特点及其在计算机领域的应用。

一、精简指令集计算机的特点:1. 简化的指令集:精简指令集计算机的指令集较简单,每个指令只执行基本操作,如加法、减法、移位等。

这样可以减少指令的复杂性,提高指令的执行效率。

2. 定长指令格式:精简指令集计算机采用定长指令格式,每个指令占据相同的位数,这样可以简化指令的解码过程,提高指令的执行速度。

3. 硬件优化:精简指令集计算机在硬件设计上进行了优化,采用精简的指令集可以减少硬件的复杂性,降低成本,并提高计算机的性能。

4. 高性能:由于精简指令集计算机采用了简化的指令集和硬件优化,它具有较高的执行速度和较低的延迟,可以提供更高的计算性能。

5. 低功耗:由于精简指令集计算机的指令较简单,执行速度较快,因此可以在相同的计算任务下,以较低的时钟频率工作,从而降低功耗。

6. 易于编程:精简指令集计算机具有较简单的指令集,编程较为简单,易于学习和使用。

同时,由于指令集较少,编译器可以对代码进行更高效的优化,提高程序的执行效率。

7. 高可靠性:精简指令集计算机采用简化的指令集和硬件优化,减少了电路的复杂性和故障率,提高了计算机的可靠性。

二、精简指令集计算机的应用:1. 嵌入式系统:精简指令集计算机广泛应用于嵌入式系统,如智能手机、平板电脑、车载导航系统等。

由于嵌入式系统对功耗和性能要求较高,精简指令集计算机能够满足这些需求。

2. 移动设备:精简指令集计算机也被广泛应用于移动设备,如智能手表、智能眼镜等。

由于移动设备对功耗和性能要求较高,精简指令集计算机能够提供较低的功耗和较高的性能。

3. 服务器领域:在服务器领域,精简指令集计算机可以提供高性能和低功耗的解决方案。

riscv汇编语言指令

riscv汇编语言指令

riscv汇编语言指令
RISC-V(精简指令集计算机)是一种基于开放标准的指令集架
构(ISA),它的汇编语言指令集包括以下几类指令:
1. R 型指令,R 型指令用于执行寄存器之间的操作,包括算术
运算和逻辑运算。

例如,add、sub、and、or、xor 等。

2. I 型指令,I 型指令用于执行立即数和寄存器之间的操作,
包括加载、存储和分支操作。

例如,addi、lw、sw、beq 等。

3. S 型指令,S 型指令用于执行立即数偏移量和寄存器之间的
存储操作。

例如,sb、sh、sw。

4. B 型指令,B 型指令用于执行分支操作。

例如,beq、bne、blt、bge。

5. U 型指令,U 型指令用于执行无条件跳转和加载立即数操作。

例如,lui、auipc。

6. J 型指令,J 型指令用于执行无条件跳转操作。

例如,jal。

以上是 RISC-V 汇编语言指令的一些基本类型,每种类型的指令都有特定的操作码和功能码,通过这些指令可以完成对寄存器、内存和控制流的操作。

除了基本指令外,RISC-V 还支持特权指令、浮点指令和原子操作等扩展指令集,以满足不同应用领域的需求。

希望这些信息能够帮助你对 RISC-V 汇编语言指令有一个初步的了解。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

CHAPTER 12 REUCED INSTRUCTION SET COMPUTERS(第12章精简指令集计算机)●对设计RISC计算机,高级语言程序行为的研究成果是有指导意义。

程序中赋值语句占有最大份额,这暗示着简单的数据传送应当优化。

程序中还有许多IF和LOOP语句,基础的顺序控制机制需要进行优化,以准许有效地使用流水技术。

操作数引用样式的研究表明,在寄存器中保持适当数量的操作数会有助于性能的提高。

●RISC机器的关键特征:①有限的指令集并具有固定格式,②大量的寄存器或利用编译器来优化寄存器的作用,③强调对指令流水线的优化(optimizing)。

●RISC的简单指令集自身便利于有效的流水化;RISC指令集自身也有助于实施延迟转移技术(the delayed branch technique):将转移指令和其他指令重排能提高流水线效率。

下面给出了自计算机诞生以来某些最主要的进步。

●Family Concept:以不同的价格/性能特征提供的一级计算机,性能和价格方面的差异在于同样结构的不同实现。

●Microprogrammed Control Unit:微编程使控制器的设计和实现变得更容易,并提供了对系列概念的支持。

●Cache Memory:极大地改善了系统性能。

●Pipelining:将并行性引入机器指令程序顺序本性的一种方式。

●Multiple Processors:包含几种不同的组织和目标●RISC:最重要的变革,在语言和行为方面对大多数计算机结构的学识是一个挑战RISC系统的关键点是:①有限的和简单的指令集并具有固定格式,②大量的寄存器或利用编译器来优化寄存器的作用,③强调指令流水线的优化(optimizing)CP332+EP458表12.1比较了几个RISC和非RISC系统12.1INSTRUCTION EXECUTION CHARACTERISTICS 指令执行特征计算机发展最易见的形式是编程语言;随着硬件成本的下降,软件成本相对上升;通用性的扩展和编程人员的长期缺乏驱使软件成本在绝对意义上上升;软件运行多年后虽经不断修正仍继续出现新的缺欠。

因此,一个计算机系统存活期的主要成本是软件而不硬件。

研究人员和工业界对此的响应是,开发出了功能更强、更复杂的高级程序设计语言,高级语言(HLL:high-level language)允许编程人员能更简明地表示算法,更关注细节,并经常支持结构化程序设计。

由此而来的是语义间隙问题(Semantic Gap),即HLL中提供的操作与计算机结构提供的操作间的差异。

这种间隙现象(Symptoms of the Semantic Gap)被认为是,包括执行的低效、过长的机器程序和编译器的复杂性。

设计者试图以结构的改进来减小这个间隙。

关键的做法包括大指令集、若干的寻址方式和硬件实现的各种HLL语句设计人员寻找新的方法:使支持HLL的结构更简单而不是更复杂。

为了理解主张RISC的理由,先简要地重新审视指令执行的特征:●完成的操作●所用的操作数●执行顺序下面总结的几个有关高级语言研究的报告中,动态测量是通过收集某些特征已出现或某一具体特性已由该情况下的程序所执行,并统计执行次数来进行的。

静态测量只是在源程序文本上进行统计,它们没有加权到每条语句的执行次数。

12.1.1Operations 操作CP106+EP146表4.9包括了几个研究的重要结论:赋值语句在程序中很显著,这暗示简单的数据传送非常重要;条件语句亦在程序中占有优势,这表明指令集的顺序控制机制亦是关键。

因而应以一种“优化”形式(an optimal fashion)来支持它们。

研究者曾在V AX、PDP-11和Motorola68000上编译Patterson程序,以确定每类语句的平均机器指令数和平均存储器访问数。

将这些平均数乘以每类语句的出现频度,就得到了CP334+EP460表12.2。

结果表明:过程调用/返回是典型HLL程序中最耗时的操作。

12.1.2Operands 操作数Patterson的研究报告查看了各类变量的动态出现频度,详见CP334+EP460表12.3。

Pascal和C程序的结论是一致的:主要使用的简单标量变量,而且80%以上的标量是(过程的)局部变量。

结论:程序中大量访问的是标量,而且它们是高度局部化的。

研究显示,因为操作数存取如此频繁,适用快速存取的结构将起重要作用。

Patterson 研究提示,优化的主选方向应是对局部标量变量的存储和访问。

12.1.3Procedure Calls 过程调用过程调用和返回是HLL程序的一个重要部分。

表12.2指出,过程调用和返回是编译后的HLL程序中最耗时的操作。

因此,考虑高效实现这些操作的方式将是有益的。

Tanenbaum的研究指出,98%的动态调用过程中传送的量少于6个,而且其中92%是少于6个局部标量变量。

Berkeley的RISC小组报告的结果,如CP335+EP461表12.4所示。

Berkeley小组发现程序保持在相当窄的过程调用窗口区域内。

这就进一步证实了操作数访问(operand reference)是“高度局部化(highly localized )”的结论。

12.1.4Implications 结论试图让指令集结构更接近HLL并不是一个有效的策略;而通过优化典型HLL程序中最耗时操作的性能,能更好地支持HLL。

由此,表征RISC结构体现在如下三点:①使用大量的寄存器,可以优化操作数的访问;②精心谨慎地设计指令流水线,因为条件转移和过程调用指令的高比例,一个过于简单的指令流水线将是低效的;③对简单(Reduced)的指令集的需求。

12.2THE USE OF A LARGE REGISTER FILE 大寄存器方案的使用已经看到:①HLL程序中有大量的赋值语句;②每个HLL语句都有一定数量的操作数访问;③大多数访问的是局部标量。

故:侧重于寄存器存储是明智的。

其理由是,寄存器存储是比主存和Cache还要快的最快可用存储装置。

寄存器集从物理上讲是小的,与ALU和控制器建在同一芯片上,使用比主存和Cache地址还要短的地址。

因此:需要一种策略能使最频繁访问的操作数保持在寄存器中,并减少(minimize)“寄存器—存储器”操作。

有两种基本途径:①基于软件,②基于硬件。

软件方法是依赖编译器来使寄存器使用最大化(maximize)。

编译器将试图为那些在一给定时间期内使用最多的变量分配寄存器,并要求使用复杂的程序分析算法。

硬件方法是简单地装备更多的寄存器,以致更多的变量更长时间地保持在寄存器中。

12.2.1Register Windows 寄存器窗口使用一大组寄存器应能减少对存储器访问的需求。

显然,设计的任务就是很好地组织寄存器来实现这个目标。

因为大多数操作数量局部标量,局部的定义是随着每次过程调用和返回而改变的,过程调用是频繁出现的操作。

解决的方法是基于两个结论:①典型的过程只使用少数传送参数和局部变量;②过程动作的深度仅限定在一个相对窄的范围内(CP75+EP106图4.3)。

因此,使用多个小的寄存器组,每个小组指派给一个不同的过程。

过程调用时自动地切换来使用不同的但大小固定的寄存器窗口;相邻过程的窗口是重叠的,以允许参数传递。

CP337+EP463图12.1说明了上述方法:任何时刻,只有一个寄存器窗口是可见的和可寻址的;窗口分成三个固定长度域:参数寄存器域、局部寄存器域和临时寄存器域。

①参数寄存器用来保存调用当前过程的过程(父过程)向下传递的参数和将被返送的结果;②局部寄存器用于局部变量,由编译器指派;③临时寄存器(Temporary Register)用于当前过程与下一级过程(孙过程)交换参数和结果。

某一级的临时寄存器与下一级的参数寄存器是物理同一的,这种重叠(overlap)准许不用实际移动数据就能传递参数。

为管理任何可能样式的调用和返回,寄存器窗口的数目将必须是不受限制的。

寄存器窗口只用于保持少数最近过程的动作,旧的动作必须保持在存储器中并当嵌套浓度减少时再恢复;因此,寄存器集的实际组织是一个由重叠窗口组成的环形缓冲器。

CP337+EP464图12.2描述的是一个6窗口的环形缓冲器。

缓冲器已填充到深度 4 (A调用B,B调用C,C调用D),过程D是当前活动的过程。

当前窗口指针(CWP)指向当前活动过程的窗口;保存窗口指针(SWP:saved-window pointer),用来指明(Identify)最近保存在存储器的窗口。

结论:N个窗口的寄存器集仅能用于N-1个过程的动作。

有研究报告指出仅有1%的过程调用和返回需要8个窗口。

Berkeley RISC计算机使用8个窗口,每个窗口有16个寄存器。

Pyramid计算机使用16个窗口,每个窗口有32个寄存器。

12.2.2Global Variables 全局变量全局变量由多个过程所使用:①编译器为HLL中声明为全局的变量指派存储器位置。

对于频繁访问的全局变量来说,这种策略是低效的;②替代方法是CPU包含有一组全局寄存器,统一编号的方法能用来简化指令格式。

例如:寄存器引用号0~7是唯一的一组全局寄存器;对寄存器8~31的引用可以是当前窗口内的具体寄存器(对CWP)的位移。

12.2.3Large Register File versus Cache 大寄存器集与Cache的对比CP338+EP466表12.5比较了大寄存器集与Cache组织的特征:①寄存器集会使空间利用低效:寄存器仅容纳有用的变量②Cache蒙受另一类的低效:数据是成块读入Cache的,其中某些块甚至将不会使用。

③Cache能处理局部变量和全局变量。

④使用寄存器集,寄存器和存储器间的数据传送由过程嵌套深度所确定。

⑤基于Cache的系统是明显较慢的,Cache的存取时间肯定要长于寄存器的存取时间。

从性能的观点看:基于窗口的寄存器集对于局部标量是优选的;通过加入只由指令使用的Cache,能进一步改善性能12.3COMPILER-BASED REGISTER OPTIMIZATION基于编译器的寄存器优化1.编译器的目标:尽可能地在寄存器中而不是在主存中为多数计算保持操作数,并且减少装入和存储操作。

2.优化任务的本质:判定在程序的任何给定点,什么样的量应指派到寄存器中。

RISC 的编译器普遍使用图着色的技术(Gradph Coloring)图着色做法:①对于一个由结点和边组成的给定图,为结点指定颜色使相邻结点不同色,而且要使颜色的数目最少。

②该问题以如下方式转换成编译器问题:1)分析程序并构成一个寄存器相关图,图的结点是符号寄存器,若两个符号寄存器同时“存活(live)”于同一程序段期间,则相应的两个结点是用一条边连接起来以指出它们相关。

相关文档
最新文档