======Computer Architecture====== //Week 5 notes// ---- ====Von Neumann==== ===Element=== CPU 通常由两部分组成: * ALU(//Arithmatic Logic Unit//):算术、逻辑运算 * Registers:为上述的运算存储数据 Memory 通常由两部分组成: * Program:存储计算机指令 * Data:存储执行指令所需要的数据 ===Information Flows=== 整个系统中存在着三种类型的管线: * Data 数据管线 * Address 地址管线 * Control 控制管线 这三种管线统称 //BUS//(//Binary Unit System//,总线) \\ \\ {{ :cs:comp_n_arch:courses:fnti_i:bus.jpg?550 |}} ==ALU 需要的 BUS== * Data Bus(数据总线)用于传输 ALU 运算所需的操作数(输入数据)以及运算完成后的结果(输出数据)。 * Control Bus(控制总线)用于传输控制信号,包括: * 指定 ALU 执行的运算类型(如加法、减法、与运算等) * 控制跳转逻辑(例如依据标志位决定是否跳转) * 其他协调 CPU 各部分协同工作的信号 ==寄存器需要的 BUS== * Data Bus:寄存器同样需要与其他部分的数据交互 * Address Bus: 传递,管理寄存器的地址信息,是访问寄存器的通道 ==Memory 需要的 BUS== * Data Bus: 负责数据的交互 * Adress Bus:指定哪一个内存单元会参与工作 * Program part 同时需要 Control Bus 来协调指令相关的各个部分 ====The Fetch-Execute Cycle==== 计算机整个过程: - Fetch - execute - redo the loop ===Fetch=== //Fetch// 指从 Memory 中获取计算机指令的整个过程。具体的过程: - 将下一条指令的**位置**放入 Memory 中存储**地址**的部分 - 通过读取该**位置对应的** Memory 内容来获取指令 ==The program counter== //Fetch// 中保存下一条指令**位置**的部分被称为 //Program counter//。大多数情况下,由于下一条指令都是紧接着当前指令,因此通常 Program counter 会通过当前值**加一**的方式获取下一条指令的地址。 ===Exectue=== * 指令的具体内容控制执行的内容 * 计算机通过相关 bits (的子集)来控制不同的操作(使用 control BUS) ===Fetch-Execute clash===