1 / 16

嵌入式系统与结构 第三章 通用处理器-软件

嵌入式系统与结构 第三章 通用处理器-软件. 第三章 主要内容.  通用处理器基本结构  通用处理器执行指令-运算  程序员观点理解通用处理器 专用指令集处理器 微处理器的选择 通用处理器设计. 举例:简单通用处理器设计. 基本结构 要求 实现的指令集 简单处理器的 ISS. FSMD. Reset. PC=0;. IR=M[PC]; PC=PC+1. Fetch. Decode. 自以下状态. IR 的位定义 : op IR[15..12] rn IR[11..8] rm IR[7..4].

twyla
Download Presentation

嵌入式系统与结构 第三章 通用处理器-软件

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 嵌入式系统与结构 第三章 通用处理器-软件

  2. 第三章 主要内容  通用处理器基本结构  通用处理器执行指令-运算  程序员观点理解通用处理器 • 专用指令集处理器 • 微处理器的选择 • 通用处理器设计

  3. 举例:简单通用处理器设计 • 基本结构 • 要求实现的指令集 • 简单处理器的ISS

  4. FSMD Reset PC=0; IR=M[PC]; PC=PC+1 Fetch Decode 自以下状态 IR的位定义: op IR[15..12] rn IR[11..8] rm IR[7..4] dir IR[7..0] imm IR[7..0] rel IR[7..0] Mov1 RF[rn] = M[dir] 到 Fetch状态 op = 0000 Mov2 M[dir] = RF[rn] 0001 到 Fetch状态 Mov3 M[rn] = RF[rm] 0010 到 Fetch状态 Mov4 RF[rn]= imm 0011 到 Fetch状态 Add RF[rn] =RF[rn]+RF[rm] 0100 到 Fetch状态 Sub RF[rn] = RF[rn]-RF[rm] 0101 到 Fetch状态 Jz PC=(RF[rn]=0) ?rel :PC 0110 到 Fetch状态 简单通用处理器的FSMD Declarations: bit PC[16], IR[16]; bit M[64k][16], RF[16][16]; 为什么寄存器文件使用16个寄存器? 为什么存储器设计成64K?

  5. 简单通用处理器的结构细化 Datapath 1 控制单元 0 到所有输入控制信号 RFs 2x1 mux RFwa Controller (Next-state and control logic; state register) RF (16) RFw RFwe 来自输入控制信号 RFr1a RFr1e 16 RFr2a PCld Irld PC IR RFr1 RFr2 PCinc RFr2e ALUs PCclr ALU ALUz 2 1 0 Ms 3x1 mux Mre Mwe Memory D A

  6. Datapath 1 Control unit 0 To all input control signals RFs 2x1 mux RFwa Controller (Next-state and control logic; state register) RF (16) RFw RFwe From all output control signals RFr1a RFr1e 16 RFr2a Irld PCld PC IR RFr1 RFr2 PCinc RFr2e ALUs PCclr ALU ALUz 2 1 0 Ms 3x1 mux Mre Mwe Memory D A 简单微处理器设计 Reset PC=0; PCclr=1; IR=M[PC]; PC=PC+1 Fetch MS=10; Irld=1; Mre=1; PCinc=1; Decode from states below Mov1 RF[rn] = M[dir] RFwa=rn; RFwe=1; RFs=01; Ms=01; Mre=1; to Fetch op = 0000 RFr1a=rn; RFr1e=1; Ms=01; Mwe=1; Mov2 M[dir] = RF[rn] 0001 to Fetch RFr1a=rn; RFr1e=1; Ms=10; Mwe=1; Mov3 M[rn] = RF[rm] 0010 to Fetch Mov4 RF[rn]= imm RFwa=rn; RFwe=1; RFs=10; 0011 to Fetch RFwa=rn; RFwe=1; RFs=00; RFr1a=rn; RFr1e=1; RFr2a=rm; RFr2e=1; ALUs=00 Add RF[rn] =RF[rn]+RF[rm] 0100 to Fetch RFwa=rn; RFwe=1; RFs=00; RFr1a=rn; RFr1e=1; RFr2a=rm; RFr2e=1; ALUs=01 Sub RF[rn] = RF[rn]-RF[rm] 0101 to Fetch PCld= ALUz; RFrla=rn; RFrle=1; Jz PC=(RF[rn]=0) ?rel :PC 0110 to Fetch FSMD datapath建立后FSM 操作代替FSMD 操作 简单处理器建立!

  7. 本章小结 • GPP处理器 • 高性能、低NRE, 灵活性 • 控制器、数据通道、存储器 • 结构化语言占主导 • 但汇编语言仍然需要 • 有许多开发工具可以获得 • 包括ISS、ICE(in-circuit emulators) • ASIPs • 微控制器, DSPs, 网络处理器、更多定制的ASIPs • 处理器选择是一个重要步骤 • GPP设计原理上与单用途处理器设计相同

  8. LPT 接口引脚 I/O 方向 寄存器地址 1 Output 寄存器2的0th bit 2-9 Output 寄存器0的0~7bit 10,11,12,13,15 Input 寄存器1的6,7,5,4,3th 14,16,17 Output 寄存器2的1,2,3th bit 示例: 并行端口驱动程序 • 使用汇编语言编程配置PC的并口来执行数字I/O • 这个表提供并口连接器引脚和响应的寄存器位置关系。可通过读写3个专用寄存器来完成响应的管脚的配置。 • 举例 : 并口监控这个输入开关,来开闭

  9. LPT Connection Pin I/O Direction Register Address 1 Output 0th bit of register #2 2-9 Output 0th bit of register #2 10,11,12,13,15 Input 6,7,5,4,3th bit of register #1 14,16,17 Output 1,2,3th bit of register #2 Parallel Port Example .386 CheckPort proc push ax ; 保存ax的内容 push dx ; 保存dx内容 mov dx, 3BCh + 1 ; base + 1 寄存器1的地址 in ax, dx ; 读寄存器 #1 and al, 10h ; 屏蔽位4以外的所有位 cmp al, 0 ; al为0 ? jne SwitchOn ; 不是则点亮LED SwitchOff: mov dx, 3BCh + 0 ; base + 0 寄存器0的地址 in al, dx ; 读当前端口状态 and al, f7h ; 清除位0 out dx, al ; 将al值写入端口 jmp Done ; we are done SwitchOn: mov dx, 3BCh + 0 ; base + 0 寄存器 #0地址 in al, dx ; 读当前端口状态 or al, 01h ; 第一位置1 out dx, al ; 写端口 Done: pop dx ; 恢复内容 pop ax ; 恢复内容 CheckPort endp extern “C” CheckPort(void); void main(void) { while( 1 ) { CheckPort(); }}

  10. 8086CPU内部结构图 CPU 控制器 工作寄存器 程序计数器(PC) 地址寄存器 指令寄存器(IR) ┆ 指令译码器(ID) 数据寄存器 控 制 逻 辑 部 件 堆栈指示器(SP) ┆ 状态寄存器(PSW) I/O控制逻辑 ALU

  11. 物理地址形成逻辑 A H A L B H B L C H C L D H D L S P B P D I S I 地址总线 AX (20位) 通用寄存器 BX CX 数据总线 DX 8086总线 16位 C S D S S S E S I P ALU数据总线 内部寄存器 总线 控制 电路 (16位) 暂存器 ALU EU 控制器 1 2 3 4 5 6 (8 位) 标 志 总线接口单元(BIU) 执行单元(EU)

  12. ARM处理器的寄存器组织 用户 系统 管理 中止 未定义 IRQ FIQ R8_fiq R9_fiq R10_fiq R11_fiq R12_fiq R13_fiq R13_IRQ R13_und R13_abt R13_svc R14_fiq R14_abt R14_und R14_irq R14_svc SPSR_irq SPSR_svc 未用 SPSR_fiq SPSR_und SPSR_abt

  13. Intel PXA255 SOC系统结构

  14. 例. 一个简单指令集 汇编指令. 第一字节 第二字节 运算 MOV Rn, direct 0000 Rn direct Rn = M(direct) MOV direct, Rn 0001 Rn direct M(direct) = Rn Rm MOV @Rn, Rm 0010 Rn M(Rn) = Rm MOV Rn, #immed. 0011 Rn immediate Rn = immediate ADD Rn, Rm 0100 Rn Rm Rn = Rn + Rm SUB Rn, Rm 0101 Rn Rm Rn = Rn - Rm JZ Rn, relative 0110 Rn relative PC = PC+ 相对地址 (only if Rn is 0) 操作码 操作数

  15. Processor 控制单元 数据通道 ALU Controller 控制与状态 Registers PC IR I/O Memory 例. 简单处理器基本结构

  16. 一个简单处理器的ISS #include <stdio.h> typedef struct { unsigned char first_byte, second_byte; } instruction; instruction program[1024]; //指令存储器 unsigned char memory[256]; //数据存储器 int run_program(int num_bytes) { int pc = -1; unsigned char reg[16], fb, sb; while( ++pc < (num_bytes / 2) ) { fb = program[pc].first_byte; sb = program[pc].second_byte; switch( fb >> 4 ) { case 0: reg[fb & 0x0f] = memory[sb]; break; case 1: memory[sb] = reg[fb & 0x0f]; break; case 2: memory[reg[fb & 0x0f]] = reg[sb >> 4]; break; case 3: reg[fb & 0x0f] = sb; break; case 4: reg[fb & 0x0f] += reg[sb >> 4]; break; case 5: reg[fb & 0x0f] -= reg[sb >> 4]; break; case 6: pc += sb; break; default: return –1; } } return 0; } int main(int argc, char *argv[]) { FILE* ifs; If( argc != 2 || (ifs = fopen(argv[1], “rb”) == NULL ) { return –1; } if (run_program(fread(program, sizeof(program),ifs)) == 0) { print_memory_contents(); return(0); } else return(-1); }

More Related