3.289. 一个架构设计模糊精确的例子
最近做了一个设计,写完后我发现它是一个架构设计是“模糊精确”的很典型的例子,但那个是个保密的设计,我不可能直接写这个设计本身,所以我在这里形容一下它的特征,以便未来举这种例子可以根据这些特征来举例子。
这个设计涉及到用指令控制加速器的和一些行为,CPU发出一个指令,加速器会完成一系列的行为,会改变CPU的状态,我们推理的是加速器可以改变CPU的哪些状态,以及这些改变和CPU的流水线在时间上的配合关系。
这个方案可以用在很多的CPU上,我们也不肯定用于什么类型的CPU上,我们也没有限定加速器的功能,所以,对于加速器会改变GPR还是CPU的特权级,我们都没有精确的指向,但我们需要一个方案,在没有这些精确的定义中,保证CPU和加速器的设计在一定的约束范围中,从而达成“降低CPU和加速器关系复杂度”这个目的。
所以我们的定义包含这些要素:
CPU通过指令改变加速器的行为,这些指令称为A指令
A指令在CPU流水线中调度,每条指令有确切的修改的寄存器的定义,这些寄存器在流水线中的依赖关系,必须完全符合对应CPU在流水线寄存器定义
A指令在程序顺序上的后续指令,,无论通过MMIO还是系统寄存器访问加速器的状态,这个状态都是唯一的。
这个定义是模糊的,很多东西都不定,但这个定义是精确的,因为你的架构是否满足它的定义,是确切的。架构设计通常都具有这样的特征。