当前位置:首页 > 芯闻号 > 充电吧
[导读]第4章 处理器体系结构·四关键词:处理器体系结构,汇编语言,指令集,硬件控制语言,寄存器和存储器 一个处理器支持的指令和指令的字节级编码成为它的ISA(instruction-set archite

第4章 处理器体系结构·四
关键词:处理器体系结构,汇编语言,指令集,硬件控制语言,寄存器和存储器 一个处理器支持的指令和指令的字节级编码成为它的ISA(instruction-set architecture,指令集体系结构)。 ISA在编译器编写者和处理器设计人员之间提供了一个概念抽象层,编译器编写者只需要知道允许哪些指令,以及它们是如何编码的;而处理器设计者必须建造出执行这些指令的处理器。 4.1 处理器设计的特点 1 从智力方面来说,处理器设计是非常有趣的。它需要完成复杂的人物,而结构又要尽可能简单。 2 理解处理器是如何工作的能帮助理解整个计算机系统是如何工作的。 3 虽然很少有人设计处理器,但是许多人设计包含处理器的硬件系统。 4 你的工作可能就是处理器设计。 4.2 Y86指令集体系结构 Y86的处理器状态类似于IA32。有八个寄存器(program register):%eax、%ecx、%edx、%ebx、%esi、%edi、%esp、%ebp。处理器每个程序寄存器储存一个字。寄存器%esp被入栈、出栈、调用和返回指令作为栈指针。而其它寄存器没有固定的含义或固定值。有三个一位的条件码(condition code):ZF、SF、OF,它们保存着最近的算术或逻辑指令造成影响的信息。程序计数器(PC)里存放着当前正在执行执行的地址。存储器从概念上来说就是一个很大的字节数组,保存着程序和数据。Y86用虚拟地址来引用存储器位置。硬件和操作系统如眼见联合起来将虚拟地址翻译成指明数据实际存在存储器中哪个地方的实际或物理地址。 1 Y86的指令细节 (1)IA32的movl指令分成了四个不同的指令:irmovl、rrmovl、mrmovl、rmmovl,分别显式地指明源和目的的格式。源可以是立即数(i)、寄存器(r)或存储器(m)。指令名字的第一个字母指明了目的的类型。两个存储器传送指令中的存储器引用方式是简单的基址加位移形式。在地址计算中,我们不支持第二变址寄存器(second index register)和任何寄存器值的伸缩(scaling)。同IA32一样,我们不允许从一个存储器地址直接传送到另一个存储器地址。另外我们也不允许将立即数传送到存储器。 (2)有四个整数操作指令,就是OPI。它们是addl、subl、andl、xorl。它们只对寄存器数据进行操作,而IA32还允许对存储数据进行这些操作。这些指令会设置三个条件ZF、SF、OF(零、符号、溢出)。 (3)七个跳转指令。是jmp、jle、jl、je、jne、jge、jg。根据转移指令的类型和条件代码的设置来选择转移。转移条件和IA32的一样。 (4)call指令返回地址入栈,然后跳到目的地址。ret指令从这样的过程中返回。 (5)pushl和popl指令实现了入栈和出栈,就像在IA32中一样。 (6)halt指令停止指令的执行。IA32中有一个与之相当的指令叫hlt。IA32的应用程序不允许使用这条指令,因为他会导致整个系统停止。在Y86程序中用halt指令来停止模拟器。 指令集的一个重要性质就是字节解释必须有唯一的解释。任意一个字节序列要么是一个唯一的指令蓄力的编码,要目就不是一个合法的字节序列。这个性质保证了处理器可以无二义性地执行目标代码程序。 2 IA32HE Y86的指令编码的比较 同IA32中的指令编码相比,Y86的编码简单的多,但是也没有那么简洁。在所有的Y86指令中,寄存器字段的位置都是固定的,而在不同的IA32指令中,它们的位置是不一样的。即使最多只有8个寄存器,我们也对寄存器采用了4位编码。IA32只用了3位编码。所以IA32能将入栈或出栈指令放在一个自接力,5位字段表明指令类型,剩下的3位是寄存器指示符。IA32可以将常数值编码成1、2或4个字节,而Y86总是将常熟之编码成4个字节。 4.3 逻辑设计和硬件控制语言HCL 要实现一个数字系统需要三个主要部分:计算位的函数的组合逻辑、存储位的存储器元素,以及控制存储器元素更新的时钟信号。 HCL:(hardware control language),硬件控制语言。 1 HCL和C语言的区别 (1)因为组合电路是由一些逻辑门组成的,它有两个属性就是输出会持续地响应输入的变化。相比之下,C表达式只会在程序执行过程中被遇到时才进行求值。 (2)C的逻辑表达式允许参数是任意整数,0表示FALSE,其它任何值都表示TRUE。而我们的逻辑门只对位值0和1进行操作。 (3)C的逻辑表达式有个属性就是它们可能只被部分求值。如果一个AND或OR操作的结果只用第一个参数求值就能确定,那么就不用对第二个参数求值了。而组合逻辑没有部分求值这条规则,逻辑门只是简单地响应它们输入的变化。 2 存储器和时钟控制 组合电路从本质上讲,不存储任何信息,相反,它们只是简单地响应输入信号,产生等于输入的某个函数输出。为了产生时序电路,也就是有状态并且在这个状态上进行计算的系统,我们必须引入按位存储信息的设备。 时钟寄存器:(简称寄存器)存储单个位或字。时钟信号控制寄存器加载输入值。 随机访问存储器:(简称存储器),存储多个字,用地址来选择该读或写哪个字。 4.4 Y86的顺序实现 处理一条指令包括很多操作。我们将他们组织成某个特殊的阶段序列,使即使指令的动作差异很大,但所有的指令都遵循统一的序列。每一步的具体处理取决于正在执行的指令。各个阶段以及各阶段内执行操作的简略描述。 取指(fetch):取指阶段从存储器读入指令,地址为程序计数器(PC)的值。 译码(decode):译码阶段从寄存器堆读入最多两个操作数。 执行(execute):在执行阶段,算术/逻辑单元(ALU)要么执行指令指明的操作,计算存储器引用的有效地址,要么增加或减少栈指针。 访存(memory)访存阶段可以将数据写入存储器,或者从存储器读出数据。 写回(write back):写回阶段最多可以写两个结果到寄存器堆。 更新PC(PC update):将PC设置成下一条指令的地址。 处理器无限制地循环执行这些阶段,只有在遇到halt指令或一些错误情况时,才会停下来。我们处理的错误情况包括非法存储器地址(程序地址或数据地址),以及非法指令。 参考文献 布赖恩特, O'Hallaron D, et al. 深入理解计算机系统[M]. 中国电力出版社, 2004.

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

MCS-51单片机的汇编语言程序由若干条汇编语言指令和伪指令构成。指令存放在程序存储器中,被单片机读取并执行,且执行结果将影响单片机自身的状态。

关键字: 汇编语言 伪指令

目前,结构化是程序设计的基本要求,可以使程序结构清晰、易于读写且方便调试,也能够提高程序设计的效率。在结构化程序设计中,程序的基本结构有三种,即顺序结构、分支结构及循环结构。而子程序(也被称为函数或过程)是一种提高程序模...

关键字: 汇编语言 顺序程序设计

在单片机系统设计中,程序设计是重要的一环,它的质量直接影响到整个系统的功能。用汇编语言进行程序设计的过程和用高级语言设计程序有相似之处,其设计过程大致可以分为以下几个步骤:

关键字: 汇编语言 程序设计 单片机

汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。在...

关键字: 汇编语言 指令 单片机

C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔研究所的D.M.Ritchie于1972年推出,1978年后,C语言已先后被移植到大、中、小及微型机上,它可以作为工作系统设计语言...

关键字: C语言 汇编语言

在汇编语言程序设计中,经常使用各种符号代替地址、变量和常量等,以增加程序的可读性。尽管符号的命名由编程者决定,但并不是任意的.

关键字: ARM 汇编语言 符号

硬件设计: GR8CPU是在面包板上构建功能齐全的计算机。

关键字: CPU Unix 汇编语言

学习编程其实就是学高级语言,即那些为人类设计的计算机语言。 但是,计算机不理解高级语言,必须通过编译器转成二进制代码,才能运行。

关键字: 汇编语言

看到这篇文章的朋友,想必大家对pic单片机均具备一定兴趣,或对pic单片机具备一定使用需求。前文中,小编曾对pic单片机汇编语言进行过部分讲解。本文中,将对pic单片机的清零等指令加以讲解,以帮助大家更好掌握pic单片机...

关键字: pic单片机 指令 汇编语言

pic单片机为最常用单片机之一,许多程序均基于pic单片机进行开发。因此,熟练pic单片机编程尤为重要。为保证大家能准确、熟练掌握pic单片机的使用,本文特带来pic单片机的各种汇编语言指令的讲解上篇,下篇将在后期文章中...

关键字: pic单片机 单片机 汇编语言
关闭
关闭