计算机组成基础(2)-- 微体系结构层
微体系结构层
- 一、微体系结构举例
- 数据通路
- 1.数据通路时序
- 2.内存操作
- 微指令
- 微指令控制
- 二、如何用微指令实现指令系统层的指令
- 指令系统层IJVM的特性
- 栈
- IJVM的内存模型
- IJVM指令集
- 微指令Mic-1如何构成指令系统IJVM
- 三、流水线思想
当CPU接收到一组0、1构成的二进制指令,准备去实现某项功能时,它有两种执行方法:
- 对于组合逻辑电路,这串二进制指令就是电路的控制信号,操控电路产生结果。
- 还有些场合,一串二进制指令实现不了某项功能,而是需要多串二进制指令共同作用,多次操作组合逻辑电路,最终产生正确的结果。这时候,这串二进制指令可能就是一个地址信息,从该地址顺序执行若干条二进制指令,这样一种方式称之为微体系结构。
一、微体系结构举例
阅读本节后回答以下问题:
- 为什么提出微体系结构
- 描述微体系结构
- 微指令的构成?如何实现跳转?
数据通路
微体系结构中,要执行多条指令的被控对象称之为数据通路,数据通路中的ALU控制信号的0、1组合就决定了数据通路的功能,可以把这组控制信号简单理解成操作码的一部分。
数据通路在一个周期内可以完成对同一个寄存器的读写,这需要一定的精巧设计
1.数据通路时序
2.内存操作
数据通路处理数据的来源是内存,它与内存的通信方式有两种
- 由内存地址寄存器(MAR)和内存数据寄存器(MDR)控制,按字寻址
- 由PC寄存器控制,把一个字节读入MBR的低8位中,按字节寻址
例如把2放入PC寄存器,然后读内存将得到内存第二个字节的值,该值保存至MBR的低8位。而把2放入MAR然后读内存,结果是把字节8-11(第2个字)存入MDR。
总结来说,字节是寻址的最小单位。字是计算机一次处理数据的最大单位。 PC/MBR用于读取指令系统层的可执行程序,程序由字节为单位。MAR/MDR用于读取指令系统层的数据字,数据由字为单位。
但是,实际内存是面向字节的,即内存的物理地址按照字节计算的。针对32位的总线,把2放入MAR(读取第二个字),实际是把8放入MAR开始读取(从第8个字节开始读),也就是说字的实现需要采用某种映射方式。一种最为简单的映射方法是将MAR中的内容左移两位,再放到地址总线上。
微指令
为了控制一次数据通路,我们一条指令需要29个(24个)控制信号:
- 6个控制ALU和2个控制移位器的信号(一个选择左/右移的功能,另一个使能或者是时间脉冲)
- 9个来自C总线的数据写入寄存器的使能
- 9个输出到B总线的寄存器使能(不需要同时使能,因此可以用译码器使能,4个信号线即可)
- 2个MAR/MDR指示内存数据读写的信号
- 1个PC/MBR指示内存读写的信号
再加上一些附加字段(下一条指令),构成了36位的一条指令结构
微指令控制
数据通路与控制数据通路的控制器,两者构成了完整的微体系结构
- 控制存储器保存着所有微指令,每条微指令构成一个字,对应一个地址,一个字36位,需要512个不同的地址。把控制存储的地址寄存器称为微程序计数器(MPC),数据寄存器称为微指令寄存器(MIR)
- 微指令没有顺序执行的特性,按照指令中的下一条地址来跳转运行。当MIR加载并稳定后,MIR中的下一条指令地址信息加载到MPC中去了。
- 说明下操作下一条指令地址的寄存器JAM。JAM寄存器有三位、JMPC、JAMN、JAMZ。当三位都为0时候,地址就是下一条指令的地址,当JAMN或者JAMZ置位后,下一条地址的情况就要取决于ALU此时的N状态或Z状态(状态标志位),JMPC置位实现MBR与Addr的相或,实现地址的跳转
二、如何用微指令实现指令系统层的指令
我们已经知道微指令是用来实现指令系统层的指令的,即完成一条指令系统层的指令需要运行多条微指令来实现。那么具体而言,一条指令系统层的指令是由哪些微指令构成,又是怎么运行的呢?阅读完本节你需要回答清楚这个问题。
我们必须挑选一个指令系统层的指令作为例子来阐述,本书挑选的是IJVM,即探如何用微指令Mic-1构成指令系统IJVM。
下文先阐述IJVM的特点,再阐述Mic-1构成IJVM的机理。
指令系统层IJVM的特性
由于指令系统层是由微指令构成的,那么了解指令系统层的特性就是了解微指令的特性。
栈
概念一
函数(或者称为过程、方法)有自己的局部变量,局部变量也需要保存在内存中的某些位置,能用一个绝对地址保存局部变量么?
- 不行,举个例子,函数嵌套调用时,需要保护现场,要把原本数据保存到其他地方,再调用嵌套函数。如果不保存,嵌套返回时,对应地址的信息就被破坏了。
因此选择了一块内存区域,称为栈,这一块区域的寄存器都没有自己的地址号,因为这块区域存储的数据是在反复进入/出去的。
形象地举个栗子:绝对地址思想就像是一个人在某个城市(内存)买了一套房子,这套房子只归这个人持有,他进行了一些房屋布置,买了些家居(函数执行),然后有一天原主人要长期出差,这套房子空出来了。有一天,有个人偷偷住进了这套房子,他根本不知道原主人的存在,于是他把旧家具丢了,重新进行了房屋布置(函数嵌套),住了一段时间这个人走了(嵌套的函数执行完了),这时候原主人出差回来了(返回现场),发现自己原本的装修都没有了。
想到一个更污的栗子:张三娶了一个老婆李四,每天过着性福的生活,某一天他突然被公司要求长期出差了。隔壁老王乘虚而入,也跟李四过上了性福的生活。老王有一天发生自己的精力不够了,他离开了李四。这时候张三出差回来了,当天晚上他正准备与李四成长一番,惆怅的发现,自己的尺寸好像不匹配了。
栈的思想就像一个公寓,反正没有房产权,你也不在乎地址的概念。现在来了一个人,他就住在第一间卧室里面,他布置了些家居。又来了另一个人,他于是住到第二件卧室去了,他也布置了些家居,但他不会影响到第一个住客,等到有一天他真的不想住了,他也就不需要他的家居了,于是他离开了。这样,第二间卧室又可以住进来新的租客了。
概念二
栈有两个指针(房屋管理人记录租客情况),寄存器LV指向当前过程的基地址,SP指向当前过程的最高一个字,LV与SP之间的数据结构成为局部变量结构
概念三
栈的另一个用途是保存操作数,例如计算a1=a2+a3的过程如下
IJVM的内存模型
IJVM没有直接可见的绝对内存地址,它是把内存分成了许多区域,然后提供各个区域的基地址,有以下区域:
- 常量池。寄存器CPP保存基地址
- 局部变量结构。寄存器LV保存基地址
- 操作数栈。看成局部变量结构的一部分,是在局部变量结构的上面开辟的一块区域
- 方法区,保存二进制程序。寄存器PC指向下一条指令
IJVM指令集
大致截图一下,看看结构就行了。
重点看看函数调用与函数返回时,栈空间的变化。
- 函数调用过程:原函数在执行,遇到了函数1调用,它先把指向函数1的指针压入栈,然后把函数1定义的局部变量入栈,最后执行INVOKEVIRTUAL。函数1局部变量上面有一块操作数栈,再上面才是函数1的第一条可执行的指令,先会保存现场(保存原函数的PC和LV),然后让LV指向当前局部变量空间的栈底。再之上就是新的调用函数2的栈结构了。
- 函数返回过程:利用保存的原函数的LV、PC进行现场恢复
最后我们看一下高级语言与指令系统层汇编语言的对应关系
微指令Mic-1如何构成指令系统IJVM
微指令是一串36位的二进制数,多串二进制数,构成了一条IJVM的指令。微指令的二进制数实际结构不方便讲解,我们给每一条二进制的微指令用一句话来代替,方便讲解。合法的话如下图所示,DEST、SOURCE就是数据通路图中的那些寄存器。
除了上面这张图,还有几句等效的语言:
- MAR/MDR读写数据用rd和wr表示。
- PC/MBR读写操作码,用fetch表示
做了上述假设后,可以看看如何用微指令实现指令系统层的指令了,部分截图如下:
三、流水线思想
嵌入式CPU中,流水线的思想很重要,需要加以理解。最简单的理解就是,同一时间,微体系结构的不同部分能同时工作,处理不同批次的数据信息。
还有七段流水线的思想。
计算机组成基础(2)-- 微体系结构层相关推荐
- 延大计算机文化基础课程作业,基于项目学习的大学《计算机文化基础课》教学设计...
摘要: 从大学教育看,计算机文化已经愈来愈多地融入了各专业科研和专业课的教学过程之中.计算机教学已成为素质教育的必要组成部分,良好的信息素养是当代大学生可持续发展的重要基础平台.大学计算机文化基础课程 ...
- 计算机文化基础教程教案,新版《计算机文化基础》教案.doc
新版<计算机文化基础>教案.doc 课 程 教 案 学院.部 计算机学院 系.所 计算机基础教研所 授课教师 韩坚华 课程名称 计算机文化基础 课程学时 32 实验学时 16 教材名称 计 ...
- mips汇编计算开方_清华考研辅导班-2020清华大学912计算机专业基础综合考研经验真题参考书目...
清华大学912计算机专业基础综合考试科目,2020年初试时间安排为12月22日下午14:00-17:00业务课二进行笔试,清华大学自主命题,考试时间3小时. 一.适用院系及专业 清华大学计算机科学与技 ...
- 计算机图形学基础考试题及答案,计算机图形学基础模拟试题参考答案
1. 计算机图形学基础模拟试题参考答案一.名 词 解 释 ( 共 9 分 , 每 题 3 分 )1. 1. 计算机图形学研究怎样用计算机生成.处理和显示图形和科学.2构造根据选择的作图命令和指定的一系 ...
- 计算机文化基础课程总结,计算机文化基础课程总结.docx
<计算机文化基础>课程总结 信工系:孙彦明 为了更好地推动教学改革, 提高教学质量, 现对该课作一个全面的总结. 一.<计算机文化基础> 课计划为 48 课时,其中理论部分 2 ...
- 计算机文化基础分析总结,《计算机文化基础实训》教学方案设计与课题分析总结.doc...
<计算机文化基础实训>教学方案设计与课题分析总结.doc <计算机文化基础一实训>教学方案设计与课题分析总结 袁良风 [ ]我院自开展木课题研宄工作以来,紧紧围绕"项 ...
- 淄博计算机文化基础试卷,我校顺利举办省高校计算机文化基础考试并获佳绩
6月28-29日我校顺利举办了山东省高校非计算机专业学生计算机文化基础考试,取得了良好的考试成绩. 山东省高校非计算机专业学生计算机等级考试由省教育厅高教处主办,目的是促进计算机公共课程教学改革,提高 ...
- 计算机文化基础第二次作业-简答题,中传2018年秋计算机文化基础第二次作业-简答题...
<中传2018年秋计算机文化基础第二次作业-简答题>由会员分享,可在线阅读,更多相关<中传2018年秋计算机文化基础第二次作业-简答题(7页珍藏版)>请在人人文库网上搜索. 1 ...
- 清华大学计算机综合基础真题,【盛世清北】2021清华大学912计算机专业基础综合考研真题-清华考...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 [盛世清北]2021清华大学912计算机专业基础综合考研真题-清华考研辅导班 盛世清北分享: 清华大学912计算机专业基础综合考试真题,适用北京大学以下院 ...
- 南农853计算机专业基础综合包括哪些,2017南京农业大学 南农大 853 计划机专业基础综合硕士招生考试大纲及参考书目.pdf...
2017南京农业大学 南农大 853 计划机专业基础综合硕士招生考试大纲及参考书目 布丁考研网,在读学长提供高参考价值的复习资料 "计算机专业基础综合 "课程参考书如下: 参考书目 ...
最新文章
- (笔试题)将数组分成两组,使两组的和的差的绝对值最小
- asp.net web开发框架_百小僧:拥抱.NET 5,从这个极速开发Web应用框架开始,Fur开源了!...
- MyEclipse中如何设置 jdk 和 jre 编译运行环境
- 路由的二次风口,华为与迅游能抓住吗?
- MyBatis和Hibernate的优缺点对比。
- Arcgis for Js实现graphiclayer的空间查询(续)
- SVN客户端安装教程
- 数据库系统的体系结构
- Python实现程序运行时间度量分析
- 计算机电脑怎么开热点,怎么在电脑上开热点?电脑开热点的两种方法介绍
- 计算机硬盘中有许多碎片,电脑磁盘碎片整理有什么用(需要经常清理吗)
- Microsoft Visual SourceSafe 使用说明详解
- C语言中的strstr函数的用法
- 【人机交互】课程知识点梳理及习题
- Android 实时监听耳机拔除
- udev和mdev两种热插拔机制
- 在Metamask中添加支持RIF币种
- EXCEL技巧——EXCEL如何实现隔行隔列求和
- 识别iPad1还是iPad2
- android7.0隐藏标题栏,大佬,7.0.22设置后只有标题栏和状态栏能改背景颜色,其它的没变化,要怎么处理一下...
热门文章
- Gspace简介 | 华为手机如何简单使用谷歌服务
- Disk for DB is too low. Cassandra state detected DOWN. Disk space for DB not retrievable
- 内网穿透NPS及NPC搭建(使用docker实现)
- AI npc会做成为游戏制作人的梦吗?
- 别花时间抠图了,赶紧试试这几个免抠图的PNG图片网站!
- 《吴恩达深度学习》学习笔记011_深度卷积网络:实例探究(Deep convolutional models: case studies)
- 无法在驱动器0的分区1上安装windows
- 5S管理卫生考评办法
- 智能优化算法的常用改进方法
- Vue项目中使用xlsx实现批量导入导出功能