本 Wiki 开启了 HTTPS。但由于同 IP 的 Blog 也开启了 HTTPS,因此本站必须要支持 SNI 的浏览器才能浏览。为了兼容一部分浏览器,本站保留了 HTTP 作为兼容。如果您的浏览器支持 SNI,请尽量通过 HTTPS 访问本站,谢谢!
这里会显示出您选择的修订版和当前版本之间的差别。
后一修订版 | 前一修订版 | ||
cs:comp_n_arch:courses:fnti_i:week_5 [2025/05/11 22:20] – 创建 codinghare | cs:comp_n_arch:courses:fnti_i:week_5 [2025/05/12 11:14] (当前版本) – [The Fetch-Execute Cycle] codinghare | ||
---|---|---|---|
行 2: | 行 2: | ||
//Week 5 notes// | //Week 5 notes// | ||
---- | ---- | ||
+ | ====Von Neumann==== | ||
+ | |||
+ | ===Element=== | ||
+ | CPU 通常由两部分组成: | ||
+ | * ALU(// | ||
+ | * Registers:为上述的运算存储数据 | ||
+ | Memory 通常由两部分组成: | ||
+ | * Program:存储计算机指令 | ||
+ | * Data:存储执行指令所需要的数据 | ||
+ | ===Information Flows=== | ||
+ | 整个系统中存在着三种类型的管线: | ||
+ | * Data 数据管线 | ||
+ | * Address 地址管线 | ||
+ | * Control 控制管线 | ||
+ | 这三种管线统称 // | ||
+ | \\ \\ | ||
+ | {{ : | ||
+ | ==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// | ||
+ | ===Exectue=== | ||
+ | * 指令的具体内容控制执行的内容 | ||
+ | * 计算机通过相关 bits (的子集)来控制不同的操作(使用 control BUS) | ||
+ | ===Fetch-Execute clash=== | ||
+ |