CPU

CPU,全称为中央处理单元(Central Processing Unit),是计算机的核心组件之一,也被称为计算机的大脑。CPU负责执行计算机程序中的指令,进行数据处理和控制计算机的各个部件

这个题目是我临时想的,不知道是否准确,一直想写一个类似的东西,希望能够引起童鞋们关注硬件并喜欢上硬件。

我是文科出生,研究生阶段才转向计算机,中间有很长一段时间都只做软件理论相关研究和一些具体的软件项目,包括编译器、电力系统监控器、软件测试工具研发等;直到2009年,才开始陆陆续续接触一些硬件项目,说是硬件项目,其实主要是一些嵌入式的项目,如世界杯前做的3G转Wifi和自己玩的一些小车和传感器等。

在做嵌入式项目之前,压根就没接触过硬件方面的开发知识,难度可想而知,什么叫编码器、什么叫译码器、怎么做分频、怎么做倍频、怎么做A/D转换、D/A等等,一系列的问题迎面而来。为了完成项目,只能硬着头皮上,从最基础的数字逻辑开始看起,从二进制、卡诺图入手,逐渐深入到组合电路和时序电路,再结合一本叫做《计算机组成与设计-硬件/软件接口》,才逐渐深入明白我们做的编译器后端的具体工作原理,在此基础上对软件的各种性能问题有了更深刻的认识。

组合电路和时序电路是计算机原理的基础课,组合电路描述的是单一的函数功能,函数输出只与当前的函数输入相关;时序电路则引入了时间维度,时序电路在通电的情况下,能够保持状态,电路的输出不仅与当前的输入有关,而且与前一时刻的电路状态相关,如我们个人PC中的内存和CPU中的寄存器,均为时序电路。

说了这么多,我们学习的组合电路和时序电路在计算机中又是怎么一回事呢?为了便于理解,下面以一个大家都能接受的C语言程序开始,从上层向下层开始解释。

void main(){
int a = 3, b = 5;
int sum = a + b;
}

这个例子大家都能明白,main函数要做的事情就是实现两个数的加法操作。这是我们人类的思维方式,但是计算机并不认识,如何让计算机理解呢?于是,我们需要将上面这个程序翻译成机器能理解的模样,这时候就需要借助编译器(如常见的gcc、msc等)将上面的程序翻译成MIPS指令(不同的CPU有不同的指令集,包括X86指令集、MIPS指令集、Sparc指令集等,我们在这里用MIPS指令集,咱们的龙芯也是采用MIPS指令集),如下所示:

#下面的每条汇编代码对应一个二进制
addi $t0, 0, 3 # a = 0+3, a保存在$t0寄存器中, 对应的二进制代码为:0010 00** **** **** **** **** **** ****(这里的星号*表示二进制,这里暂时不关心)
addi $t1, 0, 5 # b = 0+5, b保存在$t1寄存器中
addi $t2, $t1, $t0 # sum = a + b, sum保存在$t2寄存器中

到这里,大家一定还在疑惑,不是说要翻译成二进制代码吗?怎么是MIPS汇编语言?对,就是汇编语言,这个汇编语言中的每一条指令就对应一条二进制代码,汇编的方式更容易让人理解。

现在我们得到了计算机可以理解的MIPS指令(可以想象成可执行程序)了,接下来的问题是如何执行MIPS指令。

要执行程序,首先必须将可执行程序文件(从外设)加载到内存。可执行文件加载到内存时,操作系统会为每个可执行程序在内存中分配四个区:

1 代码区。也就是前面的到的汇编代码所对应的二进制码
2 全局数据区。全局变量,静态变量放在这个区
3 堆区。表示在程序执行过程中,动态申请的空间在这个区,如C语言中的malloc, free操作均是针对此区中的对象执行申请或释放操作
4 栈区。函数运行时,局部变量的保存区域。
我们重点关注代码区和栈区,初始时,其分布如下图所示:

组合电路、时序电路在计算机课程中的地位

代码区-1.png

其中PC(Program Counter)是程序计数器(是CPU中的一个寄存器,具有数据存储功能),即用来指示下一个即将执行的指令的地址,本例中,进入main函数后,即将执行的第一条指令是a = 3,其地址为:0X FF FF FF 00, 因此PC指向其对应的汇编代码的地址。

CPU根据PC的的值,从指定地址0X FF FF FF 00处获取指令,然后解析指令,并执行指令(即执行a=3)。

当a = 0执行完毕后,PC执行操作:PC = PC + 4,PC指向0X FF FF FF 04,即b = 5的指令的地址。此时,栈区的状态为:

组合电路、时序电路在计算机课程中的地位

栈区-1.png

接着,CPU根据PC的的值,从指定地址0X FF FF FF 04处获取指令,然后解析指令,并执行指令(即执行b=5)。当b=5执行完毕后,PC执行操作:PC = PC + 4,PC指向0X FF FF FF 08,即sum=a+b的指令的地址。此时,栈区的状态为:

组合电路、时序电路在计算机课程中的地位

栈区-2.png

然后,CPU根据PC的的值,从指定地址0X FF FF FF 08处获取指令,然后解析指令,并执行指令(即执行sum=a+b)。当sum=a+b执行完毕后,PC执行操作:PC = PC + 4,PC指向0X FF FF FF 12(因为,指令已经执行完毕,这里应该提示要从main函数返回)。此时,栈区的状态为:

组合电路、时序电路在计算机课程中的地位

栈区-3.png

至此为止,main函数内部的流程基本上陈述完了(关于函数间调用,相对复杂,计算机组成中会详细讲解),但如何实现这些步骤呢,其中的关键问题包括如下:

问题:
1、知道内存地址,如何定位到那个地址???答案:地址译码器
2、获取到a=3对应的指令后,如何知道是做a=0+3的操作???答案:解析指令,指令译码器
3、PC寄存器如何保存值?如何做加4操作?答案:计数器(寄存器讲解)

作者:CodingTech
来源:
简书

围观 357

国内已开启多技术路线并行的CPU技术产业新格局。在国家科技重大专项和国家级集成电路产业投资基金的推动之下,我国CPU产品技术研发已进入多技术路线同步推进的高速发展阶段,并因发展模式和技术特性的不同而呈现出不同的发展特色。其中:
  
x86体系由Intel封闭主导,国内企业通过商业合作进行CPU产品和部分技术的研发。Intel独揽x86 CPU的基础架构、芯片设计、工艺制造三大环节并封闭发展,目前已积累了超过1.7万件CPU相关专利。在硬件层面,不仅掌控与北桥CPU配套的南桥芯片组外围接口、GPU等核心技术,也主导着与x86相关的标准技术和测试认证,例如内存条接口、硬盘接口以及PCIe总线接口等;在软件层面,与微软结成“Wintel”联盟形成长期相互协同的利益闭环,众多应用厂商围绕x86+Windows体系开发产品。
  
ARM体系以开放共赢为基本原则,国内企业在获得技术授权的基础上进行芯片架构和芯片设计的研发。芯片设计企业基于ARM授权的基础架构/IP核进行芯片研发,降低了研发的难度、风险和成本,与ARM公司形成互惠互利的合作伙伴关系。而生态系统中大量的上下游软硬件企业则遵循ARM统一制定的标准规范,对接众多客户需求而实现经济利益获取。国内基于ARM生态的CPU产业已有较好基础,众多企业均已累积多年的ARM芯片研发经验,在移动终端领域,我国芯片设计技术已与国际主流水平同步,在高性能计算等应用领域也推出了相应的CPU产品。一些企业并取得ARM自主化程度最高的架构授权,可进行自主CPU基础架构的研发。
  
MIPS体系基于架构授权构建开放生态,国内企业是产品研发和生态推动的主要力量。2012年Imagination和ARM的母公司Bridge Crossing合力购得MIPS公司的580项专利,前者联合多家MIPS芯片设计企业组建MIPS开源社区PRPL基金会,共同推进MIPS架构与IP的持续向前发展;后者则侧重于战略性收购以提升知识产权综合能力。我国目前是推动MIPS生态繁荣的主要力量。
  
此外,国内对Power、Alpha等架构也有布局。国内已通过授权得到IBM的Power CPU全套技术,对标行业应用市场。申威对自主的Alpha架构也在不断深化升级,在双核Alpha基础上拓展了多核架构和SIMD等特色扩展指令集,主要面向高性能计算、服务器领域,在2016年国际超算大会评比中,基于申威26010处理器的“神威太湖之光”计算机系统首次亮相并夺冠,其峰值性能达每秒12.5亿亿次浮点运算,成为世界首台运行速度超10亿亿次的超级计算机。
  
产业升级压力巨大
  
国产CPU产业配套滞后于产品技术需求,后续升级压力较大。一是目前国内制造工艺落后于国外两代,CPU专用和高性能制造工艺尚处于起步阶段,面向服务器和PC的国产CPU产品仍需依赖台积电以及国外厂商。二是我国IP产值不足全球的10%,并且高端IP的缺乏难以满足设计和制造发展的需求。华大九天等国内企业发展自主EDA工具,但目前仍较多应用在低端产品当中。此外,与工艺制造相关的装备和材料技术的落后也制约国内制造工艺的升级,进而影响CPU生态的竞争力。
 
国产CPU生态环境薄弱且成熟缓慢,长远发展空间受限。受CPU知识产权壁垒和国外CPU企业对商业模式的限制,目前国内孤立的CPU生态环境基础薄弱且成熟缓慢,主要表现在合作伙伴少、软硬件生态力量分散、无法建立Wintel联盟的协同共赢模式、缺乏产业上下游间的融合发展和深度优化等。
  
应用开发与CPU研制未形成良性互动,竞争力提升缓慢。当前国产CPU研发还极大依赖于国家项目扶植和支持,未结合市场需求,导致产品和应用脱节的情况较为突出,无法持续发展。目前各级单位正在大力推动国产CPU的应用,但因基于国产CPU的操作系统及应用软件生态并不丰富,目前规模较小,产品竞争力提升缓慢。
  
四方面入手提升生态水平
  
首先,强化统筹协调,提升国内技术生态水平。依托国内的市场优势和企业的成长优势,以我国信息安全特殊需求为切入点,针对具有我国特色的个性化应用需求,联合华为、国防科大、展讯等核心优势企业,提升对CPU产品的研发和在相应生态中的影响力。深化国际合作,在兼容开放、专利申请等方面争取更多权益。
  
其次,强化配套供给,提升国内生态体系完备性。一是推动国内芯片设计企业与中芯国际等制造企业、江苏长电等封测企业间深化合作,围绕服务器、移动芯片、物联网芯片等专用需求,实现国内自有的专用制造和封测工艺技术。二是加大对与芯片特色功能优化紧密相关的基础IP的自研力度,力图逐步实现国产化替代。三是支持企业积极参与国际开源社区,深化对开源软件技术的理解,提升国内CPU系列芯片产品配套应用的系统软件和应用软件供给能力。
  
再次,强化应用驱动,推动国内技术产业化进程。面向国产化应用实际需求,开展研发攻关和国产化应用部署。整合各类专项资金和社会资金,继续加大对核心技术/产品自主突破的支持力度。鼓励应用企业主导建立应用牵引、研用融合的核心技术研发体系,形成研发、应用、纠错、完善的体系化迭代创新模式,实现技术研发与应用的协同效应。
  
最后,强化标准建设,提升国内差异化竞争优势。围绕我国特定领域信息安全需求,构建完备的标准化体系,并将其纳入国内市场准入控制范畴。推动企业加强对专利申请的重视程度,适当降低知识产权申请的费用门槛和管理门槛,探索产业共建知识产权专利池,提升我国对外知识产权自我保护能力。

围观 358

我们知道,在电路系统的各个子模块进行数据交换时可能会存在一些问题导致信号无法正常、高质量地“流通”,例如有时电路子模块各自的工作时序有偏差(如 CPU与外设)或者各自的信号类型不一致(如传感器检测光信号)等,这时我们应该考虑通过相应的接口方式来很好地处理这个问题。

下面就电路设计中7个常用的接口类型的关键点进行说明一下:

TTL电平接口

这 个接口类型基本是老生常谈的吧,从上大学学习模拟电路、数字电路开始,对于一般的电路设计,TTL电平接口基本就脱不了“干系”!它的速度一般限制在 30MHz以内,这是由于BJT的输入端存在几个pF的输入电容的缘故(构成一个LPF),输入信号超过一定频率的话,信号就将“丢失”。它的驱动能力一 般最大为几十个毫安。正常工作的信号电压一般较高,要是把它和信号电压较低的ECL电路接近时会产生比较明显的串扰问题。

CMOS电平接口
我 们对它也不陌生,也是经常和它打交道了,一些关于CMOS的半导体特性在这里就不必啰嗦了。许多人都知道的是,正常情况下CMOS的功耗和抗干扰能力远优 于TTL。但是!鲜为人知的是,在高转换频率时,CMOS系列实际上却比TTL消耗更多的功率,至于为什么是这样,请去问半导体物理理论吧。由于CMOS 的工作电压目前已经可以很小了,有的FPGA内核工作电压甚至接近1.5V,这样就使得电平之间的噪声容限比TTL小了很多,因此更加加重了由于电压波动 而引发的信号判断错误。众所周知,CMOS电路的输入阻抗是很高的,因此,它的耦合电容容量可以很小,而不需要使用大的电解电容器了。由于CMOS电路通 常驱动能力较弱,所以必须先进行TTL转换后再驱动ECL电路。此外,设计CMOS接口电路时,要注意避免容性负载过重,否则的话会使得上升时间变慢,而 且驱动器件的功耗也将增加(因为容性负载并不耗费功率)。

ECL电平接口
这 可是计算机系统内部的老朋友啊!因为它的速度“跑”得够快,甚至可以跑到几百MHz!这是由于ECL内部的BJT在导通时并没有处于饱和状态,这样就可以 减少BJT的导通和截止时间,工作速度自然也就可以提上去了。But,这是要付出代价的!它的致命伤:功耗较大!它引发的EMI问题也就值得考虑了,抗干 扰能力也就好不到哪去了,要是谁能够折中好这两点因素的话,那么他(她)就该发大财了。还有要注意的是,一般ECL集成电路是需要负电源供电的,也就是说 它的输出电压为负值,这时就需要专门的电平移动电路了。

RS-232电平接口
玩 电子技术的基本没有谁不知道它的了(除非他或她只是电子技术专业的“门外汉”)。它是低速串行通信接口标准,要注意的是,它的电平标准有点“反常”:高电 平为-12V,而低电平为+12V。So,当我们试图通过计算机与外设进行通信时,一个电平转换芯片MAX232自然是少不了的了。但是我们得清醒地意识 到它的一些缺点,例如数据传输速度还是比较慢、传输距离也较短等。

差分平衡电平接口
它 是用一对接线端A和B的相对输出电压(uA-uB)来表示信号的,一般情况下,这个差分信号会在信号传输时经过一个复杂的噪声环境,导致两根线上都产生基 本上相同数量的噪声,而在接收端将会把噪声的能量给抵消掉,因此它能够实现较远距离、较高速率的传输。工业上常用的RS-485接口采用的就是差分传输方 式,它具有很好的抗共模干扰能力。

光隔离接口
光 电耦合是以光信号为媒介来实现电信号的耦合和传递的,它的“好处”就是能够实现电气隔离,因此它有出色的抗干扰能力。在电路工作频率很高的条件下,基本只 有高速的光电隔离接口电路才能满足数据传输的需要。有时为了实现高电压和大电流的控制,我们必须设计和使用光隔离接口电路来连接如上所述的这些低电平、小 电流的TTL或CMOS电路,因为光隔离接口的输入回路和输出回路之间可以承受几千伏特的高压,足以满足一般的应用了。此外,光隔离接口的输入部分和输出 部分必须分别采用独立的电源,否则的话还是有电气联系,也就不叫隔离了。

线圈耦合接口
它 的电气隔离特性好,但是允许的信号带宽有限。例如变压器耦合,它的功率传输效率是非常高的,输出功率基本接近其输入功率,因此,对于一个升压变压器来说, 它可以有较高的输出电压,但是却只能给出较低的电流。此外,变压器的高频和低频特性并不让人乐观,但是它的最大特点就是可以实现阻抗变换,当匹配得当时, 负载可以获得足够大的功率,因此,变压器耦合接口在功率放大电路设计中很“吃香”。

来源:玩转单片机

围观 457

页面

订阅 RSS - CPU