ISA 是软件可见契约
目标: 通常内部的细节何时会变得与体系结构有关? 作答时请说明契约责任方、最早决定性事件,以及一项能够反驳该答案的证据。
指令集体系结构规定机器可见操作与状态,同时允许多种内部实现。 计算机体系结构把软件可见契约连接到硬件中按时间发生的状态转移。对每个结论,都要说明软件可以观察的体系结构状态、实现它的微体系结构、所有权在哪个周期或事件发生变化,以及哪条追踪能暴露分歧。框图只是可能路径的地图;它不能证明控制选择了正确路径、操作数是当前值、存储器接受了请求,或异常保留了规定边界。
本知识点使用的规格是:ISA 说明指令、编码、寄存器、数据位宽、寻址规则、存储效应、控制流、权限、异常与软件可见的必要顺序。 不变量是:两个合规处理器可以使用不同流水线与缓存,但对相同初始状态下的合法单线程程序,必须产生相同的体系结构定义结果。 从一个可手工检查的小机器出发,按需要把一条指令或事务依次追踪经过取指、解释、操作数选择、执行、存储访问与提交。必须区分延迟与吞吐、地址与所存数据、指令集规则与某一种实现、平均测量与最坏边界。故障边界“把测得周期数当作 ISA 保证,会混淆某个微体系结构与工作负载和体系结构含义。”保持可见,因为它指出第一个可能违反契约的责任方。
两个合规处理器可以使用不同流水线与缓存,但对相同初始状态下的合法单线程程序,必须产生相同的体系结构定义结果。 该陈述只在已命名假设内构成体系结构或微体系结构不变量;它并不自动适用于所有处理器、编译器、操作系统、缓存或物理存储系统。
程序只能观察 ISA 契约暴露的状态与事件。 在推导第 1 步,按需要保持指令身份、操作数新旧、地址、权限与异常状态。只有当前责任方产生已命名的有效信号或状态记录之后,才允许进入下一步。
流水线深度与缓存组织属于实现选择,除非被明确规则或时间接口暴露。 在推导第 2 步,按需要保持指令身份、操作数新旧、地址、权限与异常状态。只有当前责任方产生已命名的有效信号或状态记录之后,才允许进入下一步。
因此合规性比较提交后的体系结构行为,而不是完全相同的内部周期。 在推导第 3 步,按需要保持指令身份、操作数新旧、地址、权限与异常状态。只有当前责任方产生已命名的有效信号或状态记录之后,才允许进入下一步。
对一个简单 ISA,把程序计数器、整数寄存器、缓存标签、流水线 valid 位与分支预测历史分类为体系结构或微体系结构状态。 计算性能前先画周期或事件表。每一行都要写明活动指令或事务、读取的状态、提出的新状态,以及该提议是否在体系结构上提交。
- 程序计数器与命名整数寄存器由指令行为直接定义。 在追踪第 1 步,检查位宽、地址、依赖与 valid/ready 条件是否符合契约。把教学模型中的观测与需要 RTL 仿真器、FPGA、操作系统或制造处理器才能取得的证据分开标记。
- 缓存标签与流水线 valid 位用于实现交付,但不是程序命名状态。 在追踪第 2 步,检查位宽、地址、依赖与 valid/ready 条件是否符合契约。把教学模型中的观测与需要 RTL 仿真器、FPGA、操作系统或制造处理器才能取得的证据分开标记。
- 预测历史改变时序与推测,但正确实现不允许它改变提交含义。 在追踪第 3 步,检查位宽、地址、依赖与 valid/ready 条件是否符合契约。把教学模型中的观测与需要 RTL 仿真器、FPGA、操作系统或制造处理器才能取得的证据分开标记。
结果: 在此有界 ISA 中,PC 与整数寄存器是体系结构状态;缓存、流水线与预测记录是微体系结构状态。 结果必须同时包含最终数值与它变得可见的路径。即使数字正确,只要经过非法编码、陈旧操作数、错误权限、不精确异常或未确认存储响应,设计仍然失败。