目录
芯片的概念结构
打个比方,假如芯片是一个“银行”,这个银行很小就两个人。
一个负责拨算盘(计算),其他它都不管。
一个负责记录文档(存储),把“算什么?”(数据)和“咋么算?”(程序)都完整的用文档记录下来,方便和拨算盘的人沟通。
他们之间定义了一个沟通方式(一组总线),内容包括了“文档从哪里取?放回哪里?”(寻址总线)和“文档具体内容是什么?”(数据总线)两大部分,换句话说,一组总线包括一个地址总线和一个数据总线。特别注意这里的总线上的“数据”对应着一份文档,不要和文档里 “算什么?”的这个数据概念混淆了。
当下芯片结构是复杂的,但简单划分就三种概念结构。冯.诺依曼结构,哈弗结构和改进哈弗结构。
冯.诺依曼结构: 客户把原始的需求文档(包含输入数据和程序)交给负责记录的人后,根据定义的沟通方式,和负责实际计算的人一起反复来回的传递文档(拿程序指令,拿数据,返结果),最后把最终的计算结果通过记录的人反馈给客户。上面这种分工思路就是冯.诺依曼结构的核心,关键的特点就是客户只用和一个记录人员沟通就行,再复杂的需求都可以一股脑的给一个人,剩下的都是他们之间的事。整个过程非常灵活,这也是冯.诺依曼结构的最大优势。这种结构下程序指令存储地址和数据存储地址指向同一存储器的不同物理位置,因此程序指令和数据的宽度相同。但这种方式效率不高,因为记录的人每个时刻只能干一件事,要么告诉拨算盘的人咋么算,要么告诉它算什么。
哈弗结构:因此出现了哈佛结构,将程序指令和数据分开存储,指令和数据可以有不同的数据宽度。采用了独立的一组程序总线和一组数据总线。这就相当于原来2个人,现在三个人,记录员分了个工,一个就负责记录传递计算方法(程序),一个人就负责记录传递计算内容(数据)。两个人和拨算盘的人点对点沟通,但相互之间老死不往来。这种并行化自然提高了效率,原来要至少两个周期做完的事,一个周期就搞定了。可这种方法让客户要同时对应2个毫无联系的记录员这非常不友好。且如果需求侧重点不同,两个人的工作量常常不均衡导致浪费,如果由一个人担当(冯.诺依曼结构),这些问题都不存在。
改进哈弗结构:为了解决这个平衡问题出现了改进哈弗结构。它只有一组总线供程序存储器和数据存储器分时共用。原来的哈佛结构需要4条(2组)总线,改进后需要两条(1组)总线,且保留了两个独立并行的存储器。也就是说,记录员还是为了效率做了分工,但沟通方式升级,走上了“敏捷之路”。不再是两两沟通的老国企做派,把客户和拨算盘的人也加入进来做了个四方沟通会(分时公用),归口统一保证了灵活性,同时分时也对并行化影响不大。