设计一个简易的处理器(1)--定义指令集体系结构(ISA)

处理器的主要作用就是执行指令,那么设计处理器的第一步就是要定义或者兼容指令集体系结构(Instruction Set Architecture,ISA). 定义一个指令集体系结构,包括定义各种状态元素,指令集及编码,一组编程规范和异常事件处理.

 

传统的指令集的设计理念主要分为CISCRISC两种设计理念.现代处理器比如IA32体系结构的指令集,已经不是单纯的CISC,设计时候已经结合了RISC的精华.

 

本文介绍的Y86 ISAIA32的一个简化版本(子集),操作集较少,寻址方式较少. (*)

 

程序员的可见的状态

————

Y86的每条指令都会读取或修改处理器状态的某些部分,称为程序员可见状态.如图1所示.


1.程序寄存器(Program registers): %eax, %ecx, %edx, %ebx, %esi,%edi, %esp%ebp.都是32位的.

2.条件码(Condition codes): ZF(零标志), SF(符号标志), OF(溢出标志).用来保存最近的算术或逻辑指令造成的影响.

3.程序计数器(PC):存放当前正在执行的地址.

4.存储器(Memory):在程序员看来, Y86程序使用虚拟存储器.

5.状态码(State):表明程序执行的总体状态,它指示正常运行,或者发生某种异常.

 

 

指令集

————

2Y86指令集的简单描述.IA32AT&T指令集相似.操作的数据都是4字节的指令编码长度1-6个字节不等.

指令的格式大抵是: icode:ifun rA:rB D,具体如下图所示:

 

指令分类

具体指令

说明

传送指令(XXmovl)

(4)

指令

目的

irmovl

立即数

寄存器

rrmovl

寄存器

寄存器

mrmovl

存储器

寄存器

rmmovl

寄存器

存储器

Y86指令的寻址方式单一:基址+偏移量.

算术逻辑指令(opl)

(4)

addl, subl, andl, xorl

4个指令的执行会设置条件码(CC).

跳转指令(jxx)

(4)

jmp, jle, jl, je, jne, jge, jg

jmp是无条件跳转指令,其他是条件跳转指令

(根据条件码选择分支).

条件传送指令(cmovXX)

(6)

cmovle, cmovl, cmove, cmovne, cmovge, cmovg

根据条件码选择是否更新目的寄存器.

call/ret指令

call/ret

call将返回地址入栈,跳转目的地址.

ret指令从过程调用中返回.

pushl/popl指令

pushl/popl

入栈和出栈操作.

halt指令

halt

停止执行指令指令.设置StatHLT.

nop指令

nop

 

 

 

指令集编码

————

Y86指令1-6个字节不等.第一个字节表明指令的类型,其中高4位是代码(code)部分,4位是功能码(function). Y86的代码值0~0xB.

3给出了整数操作,条件传送和条件传送指令的具体编码(第一个字节),其他指令的功能码是0(可以功能扩展).


寄存器编码

——

为了方便,每个程序寄存器使用4位编码,其中F表示无寄存器.



 

状态码和异常

————

状态码(Stat)是程序员可见的状态之一,用来描述程序执行的总体状态.详见图5.


一个适用的处理器 , 当处理器遇到异常 , 会调用一个异常处理程序 . Y86 , 当遇到异常时 , 直接让处理器停止执行指令 .

 


*:本篇中的图片均来自本书的官网,详见http://csapp.cs.cmu.edu/public/figures.html

        Copyright© 2011, Randal E. Bryant and David R. O'Hallaron

 

reference:

1. 深入理解计算机系统(原书第2版)


(版权所有,转载时请注明作者和出处-dennis_fan-http://blog.csdn.net/dennis_fan )


  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值