1: 什么是 soc
SOC 称为系统级芯片 , 也称片上芯片 , 是一个专有目标的集成电路的产品 , 其中包括完整系统并有嵌入软件的全部内容。目前 SOC 更多的集成处理器(包括 CPU,GPU,DSP), 存储器 , 基带 , 各种接口控制模块 , 各种互联总线等 , 其典型代表为手机芯片。
2: 什么是 CPU
CPU(中央处理器 /central processing unit)是一块超大规模的集成电路 , 是一台计算机的运算核心和控制核心(运算器 + 控制器)。它的功能主要是解释计算机指令以及处理计算机软件中的数据。
CPU 主要包括运算器 (ALU) 和高速缓冲寄存器及实现它们之间数据 , 控制及状态的总线。它与内部存储器和输入 / 输出 (i/o) 设备称为电子计算机三大核心部件
ARM 公司生产的就是 CPU, 它将自己的 CPU 设计卖给其他公司 , 而 其他公司就根据 ARM 提供的 CPU 添加上自己所需要的各种外设控制器 , 这就是 SOC( 华为麒麟 )。
不同的公司所用的控制器不一定是相同的 , 因为不同的公司需要的性能不一样 , 就会想半导体公司定制他需要的控制器。
日常工作生活中 , 惯说的 CPU 说的就是 SoC, 就像内存有 NandFlash 和普通内存一样。
我们学习裸机程序就是学习 CPU 和各种外设控制器间的相互操作。
可以简单的这么理解 ,SOC 包含 CPU, 芯片的发展就是从 CPU 发展到 SOC。
3:CPU 的主要功能
处理指令
英文 Processing instructions; 这是指控制程序中指令的执行顺序。程序中的各指令之间是有严格顺序的 , 必须严格按程序规定的顺序执行 , 才能保证计算机系统工作的正确性。
执行操作
英文 Perform an action; 一条指令的功能往往是由计算机中的部件执行一系列的操作来实现的。CPU 要根据指令的功能 , 产生相应的操作控制信号 , 发给相应的部件 , 从而控制这些部件按指令的要求进行动作。
控制时间
英文 Control time; 时间控制就是对各种操作实施时间上的定时。在一条指令的执行过程中 , 在什么时间做什么操作均应受到严格的控制。只有这样 , 计算机才能有条不紊地工作。
处理数据
即对数据进行算术运算和逻辑运算 , 或进行其他的信息处理。
其功能主要是解释计算机指令以及处理计算机软件中的数据 , 并执行指令。在微型计算机中又称微处理器 , 计算机的所有操作都受 CPU 控制 ,CPU 的性能指标直接决定了微机系统的性能指标。CPU 具有以下 4 个方面的基本功能 : 数据通信 , 资源共享 , 分布式处理 , 提供系统可靠性。运作原理可基本分为四个阶段 : 提取 (Fetch)、解码 (Decode)、执行 (Execute) 和写回 (Writeback)。
4:CPU 的工作过程
CPU 从存储器或高速缓冲存储器中取出指令 , 放入指令寄存器 , 并对指令译码。它把指令分解成一系列的微操作 , 然后发出各种控制命令 , 执行微操作系列 , 从而完成一条指令的执行。指令是计算机规定执行操作的类型和操作数的基本命令。指令是由一个字节或者多个字节组成 , 其中包括操作码字段、一个或多个有关操作数地址的字段以及一些表征机器状态的状态字以及特征码。有的指令中也直接包含操作数本身。
提取
第一阶段 , 提取 , 从存储器或高速缓冲存储器中检索指令 ( 为数值或一系列数值 )。由 程序计数器 (Program Counter) 指定存储器的位置。(程序计数器保存供识别程序位置的数值。换言之 , 程序计数器记录了 CPU 在程序里的踪迹。)
解码
CPU 根据存储器提取到的指令来决定其执行行为。在解码阶段 , 指令被拆解为有意义的片段。根据 CPU 的指令集架构 (ISA) 定义将数值解译为指令。一部分的指令数值为运算码 (Opcode), 其指示要进行哪些运算。其它的数值通常供给指令必要的信息 , 诸如一个加法 (Addition) 运算的运算目标。
PU 根据存储器提取到的指令来决定其执行行为。在解码阶段 , 指令被拆解为有意义的片段。根据 CPU 的指令集架构 (ISA) 定义将数值解译为指令。一部分的指令数值为运算码 (Opcode), 其指示要进行哪些运算。其它的数值通常供给指令必要的信息 , 诸如一个加法 (Addition) 运算的运算目标。
执行
在提取和解码阶段之后 , 紧接着进入执行阶段。该阶段中 , 连接到各种能够进行所需运算的 CPU 部件。
例如 , 要求一个加法运算 , 算术逻辑单元 (ALU,Arithmetic Logic Unit) 将会连接到一组输入和一组输出。输入提供了要相加的数值 , 而输出将含有总和的结果。ALU 内含电路系统 , 易于输出端完成简单的普通运算和逻辑运算 ( 比如加法和位元运算 )。如果加法运算产生一个对该 CPU 处理而言过大的结果 , 在标志暂存器里可能会设置运算溢出 (Arithmetic Overflow) 标志。
写回
最终阶段 , 写回 , 以一定格式将执行阶段的结果简单的写回。运算结果经常被写进 CPU 内部的暂存器 , 以供随后指令快速存取。在其它案例中 , 运算结果可能写进速度较慢 , 但容量较大且较便宜的主记忆体中。某些类型的指令会操作程序计数器 , 而不直接产生结果。这些一般称作“跳转”(Jumps), 并在程式中带来循环行为、条件性执行 ( 透过条件跳转 ) 和函式。许多指令会改变标志暂存器的状态位元。这些标志可用来影响程式行为 , 缘由于它们时常显出各种运算结果。例如 , 以一个“比较”指令判断两个值大小 , 根据比较结果在标志暂存器上设置一个数值。这个标志可藉由随后跳转指令来决定程式动向。在执行指令并写回结果之后 , 程序计数器值会递增 , 反覆整个过程 , 下一个指令周期正常的提取下一个顺序
DFT- 可测性设计
所谓的可测性设计是指设计人员在设计系统时 , 考虑到测试的要求 , 通过增加一些硬件的开销 , 获得最大可测性的过程。简单来说 , 可测性设计就是为了达到故障检测的目的所做的辅助性设计。目前主要的 DFT 方法主要有 : 扫描通路测试、内建自测试 和边界扫描测试等。
原文链接:https://blog.csdn.net/bleauchat/article/details/98499782