计算机系统结构 指令集结构和设计细则
关于指令集问题,这里做一个深度的总结,之前总是被各种“指令集结构”、“指令集设计”等名词混淆,所以单独拿出来这一块细分一下;
指令集结构的分类:
总的来说,指令集结构的类别主要由一个因素决定:以何种存储单元存储操作数;
根据堆栈存储操作数、累加器存储操作书、通用寄存器存储操作数,可以分为三种指令集结构:
1.堆栈结构;
2.累加器结构;
3.通用寄存器结构,其中通用寄存器又可以根据寄存器和存储区分为再三种;
【注意】:这里注意一下CISC和RISC指令集的问题。
指令集的精简和复杂只是指令集的设计策略,而和指令集结构的类别无关,属于指令集结构的功能设计问题;
指令集的设计:
个人感觉这一部分不能死记硬背,最重要的是要能想到几个大方向:
1.功能设计:
也就是指令集的设计方向,是想采用精简指令集还是复杂指令集,这都是需要确定的方向,并且牵扯到后续的指令格式的数目、是否定长等一系列问题,所以要首当其冲的进行考虑;
2.寻址方式:
一定要搞清楚寻址方式是个什么东西;
寻址方式:指的是指令系统中如何形成要访问的数据的地址;
一般来说,寻址方式的确定使用对基准程序来进行测试统计,查看各种寻址方式的使用频率,根据频率来设定;
3.寻址方式表示:
寻址方式还有如何表示的问题,其实牵扯到了计算机组成原理的指令那一章;
一般采用两种方法进行表示:
1)编于操作码中,不采用独立字段。虽然译码很快,但是增加了指令条数,导致指令译码难;
2)单独设置一个地址描述符。虽然译码慢,但是和操作码独立,易于指令扩展;
4.操作数表示和类型:
和寻址方式类似,操作数也有表示和类型的问题。
类型不用多说,浮点之类的应有尽有;
主要是操作数表示:
1).采用操作码的编码指定,最常见的一种方式;
2).数据附上硬件解释的标记,指定操作数的类型,从而选择适当的运算;
5.指令格式的设计:
指令格式的设计关乎整体指令的设计。例如计算机组成原理中的指令格式问题,通常由固定长度或者变长等,譬如在初试中就牵扯了操作数拓展等问题;
对于指令格式的设计:
1)变长编码格式:如果关注目标代码大小而非性能,采用这种格式;
2)固定长度编码格式:如果关注性能而非目标代码长度,采用这种格式;
3)混合型编码格式:如果兼顾性能和目标代码长度,采用该格式;
原文:https://www.cnblogs.com/songlinxuan/p/12707010.html