CPU(Central Processing Unit),是一台计算机的运算核心和控制核心。CPU由运算器、控制器和寄存器及实现它们之间联系的数据、控制及状态的总线构成。差不多所有的CPU的运作原理可分为四个阶段:提取(Fetch)、解码(Decode)、执行(Execute)和写回(Writeback)。 CPU从存储器或高 速 缓冲存储器中取出指令,放入指令寄存器,并对指令译码,并执行指令。所谓的计算机的可编程性主要是指对CPU的编程。
CPU就是中央处理单元,它负责把数据读入计算并输出。所以,无论什么时候谈到CPU,一定是数据的处理和计算部分,这是必须要满足的基本要求。
之所以你们会发生混淆,是因为你们不知道,除了数据处理,还有什么其他部分。简单来说,CPU除了内部的Cache和指令存储器和一些缓冲,就没有什么可供存储数据和指令的了。所以,对于程序来说,运行时候需要的代码数据都是在内存里面的,CPU从内存里面把数据和代码取出来放到Cache里面,再从Cache里取出需要的数据。
同样,内存容量是有限的,如果找不到数据,就要从硬盘里面或者nandflash进行数据读取,或者直接读取,或者拷贝到DDR里面再进行读取,这取决于这些硬件的结构了
但是,每种架构CPU的指令是固定的,指令不会区分什么具体的DDR或者nand的架构,所以,我们需要内存控制器、硬盘控制器、nand控制器,也就是所谓的外围IP,通常,如果Cache不命中,如果需要从内存读取数据,这条访问指令就会被内存控制器获取,它进行分析后会把相应的数据从内存颗粒里面读出来发回给CPU。如果是nand的,它有自己的寄存器,可以通过对寄存器操作来实现数据的读取,这些数据仍然由控制器送给CPU。类似还有网络控制器之类的,CPU的命令都是要由这些控制器去具体实施的。
一个CPU的外部端口都会有地址总线和数据总线,我们选择一种总线,把CPU和这些外围IP连起来,让CPU可以和这些IP进行通讯,完成数据的计算和输入输出,这样就变成了一个具有实际意义的系统了。