首页 > 编程知识 正文

cpu的工作原理四个阶段,cpu运行原理

时间:2023-05-03 22:39:52 阅读:147924 作者:2123

(转自) 3358 blog.chinaunix.net/uid-23069658-id-3563960.html

传统上,我以为CPU内部是各种逻辑门器件的组合,正如当年学习《计算机组成原理》时书中介绍的。 当你看到纳米技术的时候,你真的能把那些器件做得那么小吗? 看了Intel CPU的制造流程和AMD芯片的制造流程的介绍,我深深地感到科学技术有这么发达吗?

本文以Intel为例简要介绍了CPU的工作原理。 简单地说,您应该会接触到AMD、ARM、MIPS甚至PowerPC。

我记得1968年7月18日,唠叨的缘分和dydxlz的新公司在美国加利福尼亚州,美丽的旧金山湾畔的曼延维尤城的梅德费街365号开业。 刚成立就投资15000美元从一家叫英特尔co的公司购买了英特尔名称的使用权。 由此,Intel这个半导体巨人开始了IT行业的传奇历史。

1971年11月15日,这一天作为世界IT界里程碑的一天被写入了许多计算机专业教科书。 英特尔工程师bldgz发明了世界上第一个微处理器—4004。 这个4位微处理器只有45条指令,但每秒只能执行5万条指令。 还不及1946年美国陆军宾夕法尼亚大学开发的世界上第一台计算机ENIAC。 但是集成度相当高,一张4004的重量还不到一杯。 他因发明微处理器而被英国《经济学家》杂志誉为“二战以来最具影响力的科学家之一”。 Intelcorporation的CPU开发历史如下表所示。

然后到后来的奔腾1、2、3和4,再到酷睿、酷睿2,在此不再列举。 Intel从8086进入了我们所谓的x86时代。 80386的诞生标志着英特尔进入了32位微处理器时代。 从80386到奔腾4年代的CPU,是传说中的IA-32时代。

我们知道CPU的根本任务是执行指令,对计算机来说最终是由“0”和“1”组成的一系列序列。 CPU在逻辑上可以分为三个模块,分别是控制单元、运算单元、存储单元,这三个部分通过CPU内部总线连接。 如下所示。

控制单元:控制单元是CPU整体的命令控制中心,用于控制程序计数器PC(Program Counter、命令寄存器IR(Instruction Register、 如果是命令译码器ID(Instruction Decoder ),则它按照用户预先制作的程序,依次从存储器取出各指令,存储在指令寄存器IR中,通过指令的译码(解析)来决定应该进行什么样的操作操作控制器OC主要包括拍频脉冲发生器、控制矩阵、时钟脉冲发生器、复位电路、启停电路等控制逻辑。

运算单元是运算器的核心。 可以执行算术运算,包括加减乘除等基本运算及其附加运算,以及逻辑运算,包括移位、逻辑测试或两个值的比较。 相对于控制单元,运算器根据控制单元的命令进行动作。 也就是说,运算单元进行的所有操作都由来自控制单元的控制信号指挥,因此是执行单元。

33558 www.Sina.com/:包含CPU片上高速缓存和寄存器组,在CPU中暂时存储数据的地方,存储有等待处理的数据或已处理的数据,CPU访问寄存器的时间是内存使用寄存器可以减少CPU访问内存的次数,提高CPU的运行速度。 但是,由于芯片面积和集成度的限制,寄存器组的容量不可能很大。 寄存器组可以分为专用寄存器和通用寄存器。 专用寄存器的作用是固定的,存储分别对应的数据。 通用寄存器用途广泛,程序员可以规定其用途,通用寄存器的数量因微处理器而异。 这个我接下来要介绍这个要点,在这里先提一下。

细分上图后,CPU的工作原理概括如下。

总的来说,CPU从存储器中一个接一个地取出与指令相对应的数据,按照指令操作码的规定,对数据进行运算处理直到程序执行完成。

上图没有画公交车,但逻辑上表现了出来。 原因8085、8086/8088 CPU等早期英特尔微处理器采用地址总线和数据总线复用技术。 也就是说,部分或全部地址总线与数据总线共享了部分CPU引脚。 例如8086外部地址总线有20条,数据总线上复用着地址总线的前16条引脚。 多路复用的数据总线和地址总线可以减少CPU的引脚数量,但引入了控制逻辑和操作序列上的复杂性。 因此,从80286开始,Intel的CPU采用单独的地址总线和数据总线。

无论是复用还是分离,对理解CPU的工作原理都没有什么影响。 上图没有画公交线,就是有些人太追求细节,怕脑袋胀得不行,宏观上不能瞧不起敌人。

好的,总结起来,CPU的工作原理是存储单元

,将指令计数器里所指向的指令地址(这个地址是在内存里的)送到地址总线上去,然后CPU将这个地址里的指令读到指令寄存器进行译码。对于执行指令过程中所需要用到的数据,会将数据地址也送到地址总线,然后CPU把数据读到CPU的内部存储单元(就是内部寄存器)暂存起来,最后命令运算单元对数据进行处理加工。周而复始,一直这样执行下去,天荒地老,海枯石烂,直到停电。
       如果你对这段话还是觉得比较晕乎,那么就看我们老师是怎么讲的:
   1、取指令:CPU的控制器从内存读取一条指令并放入指令寄存器。指令的格式一般是这个样子滴:

 

        操作码就是汇编语言里的mov,add,jmp等符号码;操作数地址说明该指令需要的操作数所在的地方,是在内存里还是在CPU的内部寄存器里。
   2、指令译码:指令寄存器中的指令经过译码,决定该指令应进行何种操作(就是指令里的操作码)、操作数在哪里(操作数的地址)。
   3、 执行指令,分两个阶段“取操作数”和“进行运算”。
   4、 修改指令计数器,决定下一条指令的地址。

       关于CPU我们从宏观上把握到这个程度就OK了,后面我们会逐步进入微观阶段,依次介绍80X86寄存器及其用途,NASM汇编和AT&T的区别,以及C代码中嵌入的汇编语言的写法。之所以介绍汇编语言目的不是说用汇编去写代码,那是相当的不现实,除非你是硬件驱动工程师。稍微偏上层一点的开发人员懂点低等的东西,对自己理解整个系统的架构和原理是相当有好处的。

 

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。