Presentation is loading. Please wait.

Presentation is loading. Please wait.

微处理器设计1 刘鹏 College of ISEE Zhejiang University

Similar presentations


Presentation on theme: "微处理器设计1 刘鹏 College of ISEE Zhejiang University"— Presentation transcript:

1 微处理器设计1 刘鹏 liupeng@zju.edu.cn College of ISEE Zhejiang University
Source: 补充讲义 2018/11/12 数字系统设计

2 以微处理器为中心的数字系统 Set-top boxes Sensor Nets Cameras Robots Servers Games
Media Players Laptops Routers Smart phones Supercomputers Automobiles 2018/11/12 数字系统设计 2

3 10.1 微处理器结构 什么是微处理器? 微处理器的主要结构 微处理器由一片或少数几片大规模集成电路组成的中央处 理器。
这些电路执行控制部件和算术逻辑部件的功能。 微处理器能完成取指令、执行指令,以及与外界存储器和 逻辑部件交换信息等操作,是微型计算机的运算控制部分。 微处理器的主要结构 冯诺依曼结构 将程序存储和数据存储放在同一物理存储空间 相同的总线 硬件简单 哈佛结构 将程序存储和数据存储分别放在不同的物理存储空间 不同的总线 灵活、速度快 2018/11/12 数字系统设计

4 冯诺依曼计算机模型 四个主要组成部分 输入 INPUT 输出 OUTPUT 存储器 MEMORY 微处理器 CPU 冯诺依曼计算机模型
2018/11/12 数字系统设计

5 微处理器内部结构 微处理器的两个主要部分: 控制单元 数据通路 用于控制数据通路的所有操作,实现微处理器运算的正确性
主要包括运算单元ALU、存储单元(寄存器)及其相互连接 2018/11/12 微处理器内部结构

6 指令集 专门执行一些指令集的微处理器 利用指令集编写不同的程序完成不同的处理任务 需要多少条指令集? 每条指令是什么?
每条指令的操作码(opcode)是什么? 指令编码使用多少位宽的数据? 微处理器整体结构 程序指针(Program Counter, PC)寄存器 指令寄存器(Instruction Register, IR) RISC CISC 2018/11/12 数字系统设计

7 微处理器的三个执行步骤 指令周期 (1)取指 即从程序存储器中把PC所指向的指令取出,拷贝到IR PC+1指向下一条指令的地址 (2)译指 从IR中提取出操作码,对指令所要做的操作进行翻译 决定当前执行那一条指令,跳转到那一个对应的状态去 (3)执行指令 每一步将在有限状态机的一个状态被执行 每个指令通常在一个时钟周期内执行 有些情况下一些存储器操作的指令可能需要两个甚至更长的时钟 周期,这种情况下就需要更多的状态来实现正确的时序。 一般而言,程序的指令都是存储在外部寄存器中的,所以 除了CPU外,微处理器一般还需要外部存储器以及连接外 部存储器与CPU的地址以及数据总线。 2018/11/12 数字系统设计

8 10.2 微处理器指令集 ISA 指令(Instruction) 指令集(Instruction Set Architecture)
计算机语言里的单词 指令集(Instruction Set Architecture) 计算机的词汇 指令需指明要执行的操作和要使用的操作数 机器语言(Machine Language) 指令编码为二进制数格式 汇编语言(Assembly Language) 符号格式表示各种指令 基本指令 加、减和跳转指令 2018/11/12 数字系统设计

9 MIPS Founded by J. Hennessy
处理器指令架构ISA MIPS四个原则 (1)简洁规整 (2)加快经常性事件的速度 (3)较小的速度更快 (4)好的设计要求良好的妥协 MIPS, Intel IA32 (x86), Sun SPARC, PowerPC, IBM 390, Intel IA64, ARM These are all ISAs RISC(Reduced Instruction Set Computer) fixed instruction length few instruction formats load/store architecture MIPS Founded by J. Hennessy (the 10th president of Stanford University, 1984) 设计ARM的原始想法完全来自于上述MIPS研究小组后来发表的论文,两位优秀并敏感的英国工程师Sophie Wilson和Steve Furber看到论文后专门跑到美国去参观实习了一把,回去后说服当时他们的公司老板开始设计ARM1,这个ARM1从1983年10月份项目启动,1年半后流片成功。 2018/11/12 数字系统设计 MIPS:Microprocessor without interlocked piped stages

10 汇编语言 加法 减法 复杂运算 2018/11/12 数字系统设计

11 操作数 常数(Constants)和变量 寄存器(register) 寄存器操作 寄存器组(register set)
寄存器文件(register file) 寄存器操作 MIPS寄存器名称由$符号开头; 变量a、b和c放置在$S0、$S1和$S2; 该指令将存在$S1(b)和$S2(C)的32位值相加,32位结果写入 $S0(a)。 2018/11/12 数字系统设计

12 MIPS寄存器组 2018/11/12 数字系统设计

13 寻址存储器指令 load word store word MIPS使用字节可寻址存储器 存储器中的每个字节都有一个唯一的地址
2018/11/12 数字系统设计

14 字节寻址组织方式 big-endian 或 little-endian方式 big-endian机器 little-endian机器
most significant byte, MSB在左侧 least significant byte, LSB于右侧 big-endian机器 字节的编号0从大(most significant)端开始 IBM 360, Motorola 68K, MIPS, SPARC little-endian机器 字节编号0从小(least significant)端开始 Intel x86, ARM, DEC Vax & Alpha,… 一个字有四个字节 字地址相同 2018/11/12 数字系统设计

15 立即数 立即数操作 立即数是一个16位二进制补码数据 范围是[-32768,32767] 2018/11/12 数字系统设计

16 MIPS指令格式 1)R型------三个寄存器操作数格式 2)I型--------两个寄存器操作数格式 3)J型-------无寄存器格式
用于如add和sub指令,有三个寄存器操作数 2)I型 两个寄存器操作数格式 用于如lw和sw指令,具有两个寄存器操作数和一个 16位立即数 3)J型 无寄存器格式 有一个26位的立即数,无寄存器 MIPS的32位指令编码 2018/11/12 数字系统设计

17 机器语言(machine language)
R-type Instructions R型是寄存器类型(register-type)的缩写 32位指令 六个数字域 op,(也称为opcode或操作码),R型指令的opcode为6‘b000000 rs,rt,源寄存器 rd,目标寄存器 shamt,只用于移位操作,其它R型指令,shamt为5’b00000 funct,(也称为功能码),确定特定的R型操作 每个字段为5比特或6比特; 2018/11/12 数字系统设计

18 R型指令机器码 R型指令add和sub的机器码 汇编指令add $S0, $S1, $ S2 RS=$ S1(17),源数据
RT=$ S2(18),源数据 结果存到 RD=$ S0(16)。 2018/11/12 数字系统设计

19 I-Type Instructions I型是立即数类型(immediate-type)的缩写 四个字段 op,操作码 rs,源操作数
rt,如addi和lw用作目标操作数,sw作为另一种源操作数 imm,源操作立即数 rs和imm始终用作源操作数 2018/11/12 数字系统设计

20 I 型指令机器码 I型指令有一个16位的立即数字段, 但立即数是在32位操作中使用的。
例如,lw需要在32位的基址寄存器加一个16位的偏移量。 符号扩展 如果是正的立即数,16位立即数扩展为32位,高16比特(31-16位)全为0; 如果是负的立即数,扩展为32位时高16比特(31-16位)全为1。 2的补数符号的扩展不改变它的值。 2018/11/12 数字系统设计

21 Signed & Unsigned Number
If given b[n-1:0] in a register or in memory Unsigned value Signed value (2’s complement) 2018/11/12 数字系统设计

22 J-type Instructions J型是跳转型(jump-type)的缩写 此格式只用跳转指令使用。 用26位的地址操作数,addr
用于指定一个地址 2018/11/12 数字系统设计

23 例 将下面的机器语言代码翻译为汇编语言 0x2237_FFF1 0x02F3_4022 把每一条指令写成二进制,
在最高六位查找每个指令的opcode,opcode决定如何解释 其余位。 opcode分别为6’b 表示addi和6’b 表示R型指令, R型指令的funct字段是6’b100010,这表明它是一个sub指令。 ? 2018/11/12 数字系统设计

24 10.3 微处理器设计示例EC-1 指令集-1 五个8bits指令
Opcode=3bits, 000,001和010三个编码没有定义 nop 1) 指令IN A输入一个8比特的数值,并存储到累加器A中; 2) 指令OUT A将累加器A中的数值拷贝到输出端口; 3) 指令DEC A把累加器A中的数值减1后再存入到累加器A中; 4) 指令JNZ(Jump Not Zero)测试A中的数值是否为0,假如为0,这个指令什么也不做,假如不为0,则将指令中的后四位,即aaaa(表示跳转地址)加载到寄存器PC中; 5) 指令HALT通过使CPU停止在halt状态,停止微处理器的运行,直到系统复位跳出halt状态。 2018/11/12

25 数据通路-1 指令集中操作的数据通路 (1)执行指令周期中的取指操作,并递增PC值或者加载新的PC值 (2)存储器
(3)实现指令集中所有指令的操作 2018/11/12 Spring ZDMC – Lec. #24

26 数据通路-1 一个PC寄存器,4比特,+递增单元 一个IR寄存器,8比特 一个具有16个存储单元的8位程序存储器
一个8比特的累加器A,+递减单元 指令IN A,累加器A的输入来自于数据输入端口 指令DEC A,累加器A的输入来自于递减单元的输出 指令OUT A,无需特别的数据通路的操作,累加器的输出直接连接到 数据输出端口 指令JNZ A,需要一个8比特的OR门连接到累加器的所有输出上,来测 试条件A是否不等于0。IR寄存器的低4位数据加载到PC寄存器中 指令HALT,不需要任何额外的操作 2018/11/12 Spring ZDMC – Lec. #24

27 控制信号 数据通路中的控制字主要有5个 给控制单元提供一个状态反馈信号 即IRload,PCload,INmux,Aload和JNZmux。
Aneq0 我们的设计中,为了保持设计的简洁,我们把程序存储器跟CPU一起设计在数据通路中了 2018/11/12 Spring ZDMC – Lec. #24

28 控制单元-1 控制单元的状态图 状态START(000)作为初始复位状态 在FETCH状态 在DECODE状态
指令JNZ A需要额外的时钟周期完成 PC加载新地址在下一个时钟沿发生 在FETCH状态 控制IRload信号有效 将PC寄存器指向的程序加载到IR寄存器 然后PC寄存器中的内容递增1后 信号PCload将新PC加载到PC寄存器中 在DECODE状态 测试IR寄存器的高三位 即IR_7-5解码 跳转到对应的状态 2018/11/12 Spring ZDMC – Lec. #24

29 五个指令的执行状态 指令IN A操作 指令DEC A 指令JNZ 到HALT状态 设置INmux信号为1来选择输入信号为外部端口
设置Aload信号为1来加载输入信号到累加器A 注意,为了输入指令能够读取到正确的输入值,输入数据需要在微处理器复位 之前就设置好 而且,由于INPUT状态不需要等待一个类似于回车键的信号,因此,即使有多 个数据输入,也只能有一个数据会被读入进来 指令DEC A 需要设置INmux信号为0、Aload信号为1 以使递减单元的输出被连接到累加器并加载进来 指令JNZ 使JNZmux信号有效以将IR寄存器中的低4位地址信号加载到PC寄存器 状态反馈信号Aneq0=1时,控制信号PCload信号被设置为有效 到HALT状态 将会无条件的停留在HALT状态 微处理器停止操作 2018/11/12 Spring ZDMC – Lec. #24

30 状态图 次态表、实现表,激励方程 2018/11/12 Spring ZDMC – Lec. #24

31 状态控制 输出表、输出方程 2018/11/12 Spring ZDMC – Lec. #24

32 控制单元 完整控制电路 2018/11/12 Spring ZDMC – Lec. #24

33 完整电路-1 数据通路电路与控制单元电路信号连接 2018/11/12 Spring ZDMC – Lec. #24

34 示例汇编程序-1 测试程序 手工编译 输入一个数据,将此数据进行递减直至0。 程序必须在数据通路和微处理器实现之前,加载到存储器中去
指令JNZ,最右边4位表示当检测条件为真时程序跳转的地址。 假设第一个指令IN A存储在程序存储器的地址为0000, 指令JNZ将跳转到第二个指令OUT A(在程序存储器中的地址是0001) JNZ指令的最后四位操作数被设置为0001。 由于指令JNZ的操作码为110,所以综合起来指令JNZ完整的编码是 。 2018/11/12

35 硬件电路实现-1 完整的计算机 微处理器,存储器、输入和输出设备。 八个拨码开关作为输入设备,2个七段数码管作为输出设 备。
一个LED来显示是否已经结束工作,一个按钮作为复位按 钮。 较高频率(如25MHz)的时钟分频后变成4Hz,作为微处理 器的时钟。 2018/11/12 Spring ZDMC – Lec. #24

36 指令集扩展---EC-2微处理器 指令集-2 8个指令,仍是8位 2018/11/12
Spring ZDMC – Lec. #24

37 指令 LOAD指令 STORE指令 ADD和SUB指令 IN指令 JZ指令 JPOS HALT指令使微处理器停止运行
地址是由指令的低5位表示 STORE指令 把A中存储的内容赋给存储器特定地址单元 ADD和SUB指令 分别表示把A的内容和存储器特定地址的内容相加、相减 并把其结果再赋给A IN指令 输入一个值并存入A JZ指令 如果A=0则把特定地址赋给PC。把新地址赋给PC会导致微处理器跳转到存储器 这个新地址继续执行程序 JPOS 表示如果A是正数则把A中的内容作为特定地址赋给PC 因为A是用补码表示,所以如果A的最高位为0时,则A是正数 HALT指令使微处理器停止运行 2018/11/12 Spring ZDMC – Lec. #24

38 数据通路-2 执行指令周期操作和实现所有指令操作 PC和递增单元的位宽:需要有32个位置的存储器,因此地址、PC和递增单元的位宽均为5比特。
在PC的输出和存储器地址的输入之间的加入了一个2选1多路选择器。多路选择器的一个输入来自于PC,另一个输入则来自IR的低四位,IR4-0。 2018/11/12

39 操作数 指令:LOAD、STORE、ADD、SUB 存储器 加-减单元 多路选择器的一个输入来自于PC
另一个输入则来自IR的低5位,IR4-0。 用地址作为操作数 它们的存储器地址是由IR的低五位给定的 2选1多路选择器的选通信号是Meminst 存储器 大小增加到32个位置,因此需要5比特位宽 LOAD & STORE指令:为了把数据从存储器中读出,也能把A的值赋给特定地 址存储器,需要用一个RAM来代替之前的ROM 为了实现STORE操作,把A的输出与存储器的数据输入D7-0相连 当信号MemWr有效时,则把A的值写入内存的指令地址 存储器的输出Q7-0与累加器A的相连是为了执行LOAD的指令 通过4选1多路选择器 加-减单元 为了执行ADD和SUB指令 多路选择器的选通信号为Asel1-0,第四个多路选择端没有使用 2018/11/12 Spring ZDMC – Lec. #24

40 反馈信号 两个条件跳转指令JZ和JPOS 数据通路有八个控制信号 数据通路提供2个反馈信号
数据通路提供给状态机两个反馈信号,Aeq0和Apos 如果A的值是0,则Aeq信号输出为1,故只需一个8输入 NOR门 如果A的值是正数,则Apos为1,因为A是补码表示,首位 为0表示正数,首位为1表示负数,所以Apos只须等于A7 的取反信号 数据通路有八个控制信号 IRload, JMPmux, PCload, Meminst, MemWr, Asel1-0, Aload 和Sub 数据通路提供2个反馈信号 Aeq0 和 Apos 2018/11/12 Spring ZDMC – Lec. #24

41 控制单元-2 状态图 EC-2的DECODE状态需要通过分支到8个不同的状态以 便执行对应的8个指令来解码8位指令编码
EC-2三个指令LOAD、ADD和SUB需要涉及存储器访问问题。只有解码指令之后,控制单元才知道存储器哪个特定地址是需要被读取的。 设计中,使用DECODE状态执行完成存储器特定地址读取的操作;这样,当控制单元到达执行状态时,存储器已经准备好了数据。 在此设计中,是因为它通过设置DECODE状态的Meminst信号有效,使得存储器读取操作执行,不冲突 2018/11/12 Spring ZDMC – Lec. #24

42 控制信号 控制信号设置 LOAD A指令 执行STORE A指令
在跳转到START状态前,状态表的INPUT状态将等待ENTER键信号。需要一个电路产生只持续一个时钟长度的有效按键信号 控制信号设置 LOAD A指令 Asel1信号需要置1,而Asel0需要置0,为了多路选择器输入端口2使得存储 器输出能到达A的输入。而A的实际加载是通过使Aload信号置1实现的 执行STORE A指令 需要通过使Meminst置1使得存储器地址来自于IR,当MemWr置1时,则将 写入存储器 2018/11/12 Spring ZDMC – Lec. #24

43 状态转换 次态表和激励方程 2018/11/12 Spring ZDMC – Lec. #24

44 控制信号 输出方程 2018/11/12 Spring ZDMC – Lec. #24

45 控制单元 电路图 2018/11/12 Spring ZDMC – Lec. #24

46 完整电路-2 连接数据通路、控制电路和状态信号 2018/11/12 Spring ZDMC – Lec. #24

47 示例程序-2 用文件PROGRAM.MIF的内容进行初始化 文件包含3个程序: GCD为计算两个输入的最大公约数的程序;
SUM计算1至n之间所有数的和的程序; COUNT展示把输入n减至0的程序。 2018/11/12 Spring ZDMC – Lec. #24

48 2018/11/12 Spring ZDMC – Lec. #24

49 硬件实现-2 EC-2微处理器的输入输出设备之间的接口 输入由8个DIP开关组成,输出是2个七段数码管显示。
使用一个LED来显示我们的微处理器是否已经停止工作,使用一个按钮作为复位按钮。 当Enter开关每次被按压时,一个单触发电路用来产生一个时钟周期的脉冲。 将系统输入的时钟进行分频可以看到一些中间结果的显示。 2018/11/12 Spring ZDMC – Lec. #24


Download ppt "微处理器设计1 刘鹏 College of ISEE Zhejiang University"

Similar presentations


Ads by Google