[计算机硬件及网络]chap4控制器
第 4 章 控制器 学习时,要注意 要牢牢把握整机的概念 要抓住以下线索: 计算机操作的逻辑依据 时间条件 控制逻辑 4.1 CPU 的结构 控制器的组成 程序计数器PC(Programming Counter) 用来存放正在执行的指令的地址或接着将要执行的下一条指令的地址。 顺序执行时,每执行一条指令,PC的值应加1 要改变程序执行顺序的情况时,一般由转移类指令将转移目标地址送往PC ,可实现程序的转移。 指令寄存器IR(Instruction Register)?? 指令寄存器用来存放从存储器中取出的待执行的指令。 在执行该指令的过程中,指令寄存器的内容不允许发生变化,以保证实现指令的全部功能。 指令译码器ID(Instruction Decoder) ?? 暂存在指令寄存器中的指令只有在其操作码部分经译码后才能识别出是一条什么样的指令。 译码器经过对指令进行分析和解释,产生相应的控制信号提供给时序控制信号形成部件。 机器周期、工作节拍、脉冲及启停控制线路?? 由脉冲源产生一定频率的脉冲信号作为整个机器的时钟脉冲 时序控制信号形成部件?? 时序控制信号形成部件又称微操作信号发生器,真正控制各部件工作的微操作信号是由指令部件提供的操作信号、时序部件提供的时序信号、被控制功能部件所反馈的状态及条件综合形成的。 地址形成部件?? 根据指令的不同寻址方式,用来形成操作数的有效地址 控制器的功能 指令流出的控制?? 实质上就是对取指令的控制。 指令分析与执行的控制?? 对指令流中的每条指令进行分析解释,根据指令的操作性质和寻址方式形成操作数的地址 然后根据该操作数的地址找到相应的存储单元,并从中取出指令执行过程中要用到的操作数 最后还要形成相应的操作控制信号序列,通过运算器、存储器及输入/输出设备的动作,来实现这条指令的功能。 指令流向的控制?? 指令流向的控制即下条指令地址的形成控制。 运算器 组成 ALU、累加寄存器、数据缓冲器、状态条件寄存器 功能 算术运算 逻辑运算 运算器接受控制器的命令而进行动作,即运算器所进行的全部操作都是由控制器发出的控制信号来指挥的,所以它是执行部件。 其他部件 寄存器 Cache 程序的两种执行方式 硬件处理器 解释器 解释器将目标机的指令分解成几个更小的步骤执行 实现低成本的计算机能执行高性能计算机的所有复杂指令的途径 可以最小的代价增加新的指令,易于修改错误 可对复杂指令有效的开发、测试和编制文档 减少硬件而使用解释器来实现特定指令集是设计处理器的一种高效办法(VAX机) 存放解释器的存储器是一种快速只读存储器-控制存储器 实例:一台简单计算机的解释器 Publicclass interp { Static int PC;//存放下条指令地址的PC Static int AC;//累加器:用于算术运算的寄存器 Static int instr;//存放当前指令的寄存器 Static int instr_type;//指令类型(操作码) Static int data_loc;//数据地址,若没有值为-1 Static int data;//存放当前操作数 Static Boolean run_bit=true;//运行指示位,需停机时将其关闭 Public static void interpret ( int memeory[ ], int starting_address ) { PC=starting_address; While(run_bit) { Instr=memory[PC];//取下条指令到instr PC=PC+1;//PC加1 Instr_type=get_instr_type(instr);//判断指令类型 Data_loc=find_data(instr, instr_type);//对数据寻址,没有返回-1 If(data_loc>=0) //若data_loc为-1,则无操作数 Data=memory[data_loc];//取操作数 Execute(instr_type, data);//执行指令 } } Private static int get_instr_type(int addr) { … } Private static int find_data(int instr, int type) { … } Private static void execute(int type, int data) { … } } 4.2 指 令 周 期 计算机执行一条