购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.1 CPU

1.1.1 CPU概述

计算机的诞生并不是一蹴而就的,从1642年帕斯卡设计了第一台机械计算机,到现在已经有三百多年,在这三百多年中,无数颗“最强大脑”用他们智慧的火花,凝聚成了这个璀璨的星河,让人类的文明有了跨时代的腾飞。

作为计算机最重要的组成部件,CPU(中央处理器)是由VLS(I 超大规模集成电路)组成,这些电路又由一个个晶体管组合而成。1971年,Intel(英特尔)推出了世界上第一款微处理器4004,它是一个包含了2300个晶体管的4位CPU,但功能相当有限,且速度很慢。经过这么多年的发展,CPU从8088、80286、80386、80486、奔腾系列、酷睿系列,到今天的i5、i7、i9系列;位数从4位、8位、16位、32位,发展到今天的64位;主频从几兆赫兹到今天的4吉赫兹以上;其集成的晶体管数从2万个到现在的几十亿个以上。

在介绍CPU之前,首先介绍对计算机的发明做出重要贡献的几位科学家。

1.查尔斯·巴贝奇

查尔斯·巴贝奇被称为机械计算机之父,如图1-1所示,他造出了第一台差分机,且其运算精度达到了6位小数,如图1-2所示,后来他又设计了20位精度的差分机。

1985—1991年,伦敦科学博物馆为了纪念查尔斯·巴贝奇200周年诞辰,根据其1849年的设计,用19世纪的技术成功造出了差分机2号。第一位被大家公认的程序员Ada正是和查尔斯·巴贝奇一起工作时提出了程序循环分支等大众已习以为常的程序化思想。

图1-1 查尔斯·巴贝奇

图1-2 差分机

2.图灵

图灵被称为计算机科学之父,人工智能之父,如图1-3所示。

图1-3 图灵

1931年图灵进入剑桥大学国王学院,毕业后到美国普林斯顿大学攻读博士学位,图灵对人工智能的发展有诸多贡献,提出了一种用于判定机器是否具有智能的试验方法,即图灵试验。

图灵服务的机构于1943年成功研制了CO-LOSSUS(巨人)机,这台机器的设计采用了图灵提出的某些概念。它使用了超过1500个电子管,采用了电子管双稳态线路,利用穿孔纸带输入方式和光电管阅读器,执行计数、二进制算术及布尔代数逻辑运算。

3.冯·诺依曼

冯·诺依曼是20世纪最重要的数学家之一,在现代计算机、博弈论等诸多领域有杰出建树,如图1-4所示。他提出了冯·诺依曼体系结构,这是一种将指令存储器和数据存储器合并在一起的存储器结构,大大增加了计算机的运算效率。

图1-4 冯·诺依曼

1.1.2 计算机结构

计算机的核心是CPU,CPU结构主要有两种:哈佛结构、冯·诺依曼体系结构。现代计算机绝大多数基于冯·诺依曼体系结构。

1.冯·诺依曼体系结构

冯·诺依曼体系结构也被称为普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,因此程序指令和数据的宽度相同。如Intel公司的8086中央处理器的程序指令和数据都是16位宽。

冯·诺依曼体系结构主要包括以下几部分。

(1)包含算术逻辑部件(ALU)和处理器寄存器的运算器单元,用来完成各种算术和逻辑运算。

(2)包含指令寄存器和程序计数器(PC)的控制器单元,通常用来控制在不同条件下程序的分支和跳转,在现代计算机里,控制器单元和运算器单元共同组成了CPU。

(3)内存单元,用于存储数据和指令。

(4)各种输入设备和输出设备。

现代计算机也都是基于这个体系结构来设计开发的,冯·诺依曼体系结构模型如图1-5所示。

图1-5 冯·诺依曼体系结构模型

计算机程序最主要的思想就是存储程序并顺序执行,对其有以下规定。

(1)把需要的程序和数据送至计算机中。

(2)必须具有长期记忆程序、数据、中间结果和最终运算结果的能力。

(3)能够完成各种算术、逻辑运算和数据传送等数据加工处理的能力。

(4)能够根据需要控制程序走向,并能根据指令控制机器的各部件使其协调操作。

(5)能够按照要求将处理结果输出给用户。

其实所有的计算机程序,其功能都可以抽象为从输入设备读取输入信息,通过运算器和控制器来执行存储在存储器里的程序,最终把结果输出到输出设备中。而无论是高级语言还是低级语言的程序,也都是基于这样一个抽象体系结构来进行运作的。

2.哈佛结构

冯·诺依曼体系结构和哈佛结构是有区别的。在冯·诺依曼体系结构中,程序指令存储器和数据存储器都可以放到内存中,被统一编码,而在哈佛结构中它们被分开编码。

哪些处理器是哈佛结构?哪些处理器是冯·诺依曼体系结构?

MCU(单片机)绝大多数采用哈佛结构,例如广泛使用的51单片机、典型的STM32单片机(核心是ARM Cortex-M系列的)。

PC和服务器芯片(如Intel AMD),ARM Cortex-A系列嵌入式芯片(如三星Exynos 4412,华为的麒麟970等手机芯片)采用冯·诺依曼体系结构。因为这些系统都需要大量内存,且其为DRAM(动态随机存储器),所以它们更适合使用冯·诺依曼体系结构。

实际上,现代的CPU准确地说叫作SoC(单片系统),绝大多数不是纯粹的哈佛结构或冯·诺依曼体系结构,而是混合结构。

例如基于Exynos 4412的开发板上配备了1GB的DDR SDRAM(双倍数据速率同步动态随机存储器)和8GB的eMMC(闪存)。正常工作时所有的程序和数据都从eMMC加载到DDR SDRAM中,也就是说不管是程序还是数据都存储在eMMC中,运行在DDR SDRAM中,再通过高速缓存寄存器将它们送给CPU加工处理。这就是典型的冯·诺依曼体系结构。但是,Exynos 4412内部仍然有一定容量的64KB IROM和64KB IRAM,这些IROM和IRAM用于引导和启动SoC,上电后芯片首先会执行内部IROM中固化的程序,此时Exynos 4412就好像一个MCU(微控制器),这又是典型的哈佛结构。因此,Exynos 4412就是混合式结构设计。

1.1.3 CPU的组成

计算机系统包括硬件系统和软件系统,硬件是计算机系统的物质基础,软件是计算机系统的灵魂,如图1-6所示。硬件和软件是相辅相成的,不可分割。

图1-6 计算机系统

(1)输入设备

输入设备的任务是把人编写的程序和原始数据送到计算机中,并且将它们转换为计算机内部所能识别和接收的信息方式。例如,鼠标、键盘、显示器,以及我们用的智能手机触摸屏既是输入设备又是输出设备;而在各种云上的服务器,则是通过网络来进行输入和输出的。

(2)输出设备

输出设备的任务是将计算机的处理结果以人或其他设备所能接受的形式送出计算机。常用的输出设备有显示器、打印机、绘图仪等。

(3)计算机的总线结构

将计算机的各大基本部件按某种方式连接起来就构成了计算机的硬件系统。系统总线包含3种不同功能的总线,即数据总线(DB)、地址总线(AB)和控制总线(CB),计算机总线结构如图1-7所示。

图1-7 计算机总线结构

数据总线:用于传送数据信息。数据总线的位数是微型计算机的一个重要指标,通常与微处理器的字长一致。例如,Intel 8086微处理器字长16 bit,其数据总线宽度也是16位。

地址总线:专门用来传送地址。地址总线的位数决定了CPU可直接寻址的内存空间大小,比如8位微处理器的地址总线为16 bit,则其最大可寻址空间为2 16 byte,为64KB, 16位微处理器的地址总线为20 bit,其可寻址空间为2 20 byte,为1MB。

控制总线:用来传送控制信号和时序信号。在控制信号中,有些信号是微处理器送往存储器和I/O接口电路的,如读/写信号、片选信号、中断响应信号等;有些信号是其他部件反馈给CPU的,如中断申请信号、复位信号、总线请求信号、就绪信号等。控制总线的具体情况取决于CPU。

(4)CPU

CPU作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。CPU内部主要包括运算器和控制器,CPU运算器结构如图1-8所示。

图1-8 CPU运算器结构

运算器的核心是算术逻辑部件和若干个寄存器。CPU用寄存器存储计算时所需的数据,寄存器一般有如下3种。

通用寄存器:用来存放需要进行运算的数据,如需进行加法运算的两个数据。

程序计数器:用来存储 CPU 要执行下一条指令所在的内存地址。

指令寄存器:用来存放程序计数器指向的指令。

ALU可以执行算术运算(包括加、减、乘、除等基本运算及其附加运算)和逻辑运算(包括移位、逻辑测试等运算)。相对控制器而言,运算器接受控制器的命令而进行动作,即运算单元所进行的全部操作都是由控制器发出的控制信号来决定的,所以控制器是执行部件。

控制器是整个CPU的指挥控制中心,由程序计数器(PC)、指令寄存器(IR)、指令译码器(ID)和操作控制器(OC)等组成,对协调整个计算机有序工作极为重要,CPU控制器结构如图1-9所示。

图1-9 CPU控制器结构

控制器根据用户预先编写好的程序,依次从存储器中取出各条指令,将其放在指令寄存器中,通过指令译码器(分析)确定应该进行什么操作,然后操作控制器按确定的时序,向相应的部件发出微操作控制信号。操作控制器中主要包括节拍脉冲发生器、控制矩阵、时钟脉冲发生器、复位电路和启停电路等控制逻辑单元。

(5)存储器

存储器是用来接收数据和保存数据的部件,它是一个记忆装置,也是计算机能够实现程序存储和程序控制的基础,包括Cache(一种高速缓冲存储器)、主存储器、辅助存储器,存储器的基本分类如图1-10所示。

图1-10 存储器的基本分类

寄存器:在CPU内部或I/O接口中,CPU可以直接访问寄存器;寄存器一般是8位,或8的整数倍位,32位CPU寄存器可存储4byte,64位寄存器可存储8byte。寄存器访问速度一般是半个CPU时钟周期,为纳秒(ns)级别。

高速缓存器(Cache):高速缓存器可以直接被CPU访问,它用来存放当前正在执行的程序中的活跃部分,以便其快速地向CPU提供指令和数据,其分为一级缓存器(L1)、二级缓存器(L2)、三级缓存器(L3)等,它位于内存和 CPU 之间,是一个读写速度比内存更快的存储器。当CPU向内存写入数据时,这些数据也会被写入高速缓存器中。当CPU 需要读取数据时,会从高速缓存器中直接读取,当然,如果需要的数据在高速缓存器中没有,CPU会再去读取内存中的数据,各级高速缓冲存储器介绍如下。

① L1:存在于每个CPU,用来缓存数据根指令,访问空间大小一般为32~256KB,访问速度一般是2~4个CPU时钟周期。

② L2:存在于每个CPU,访问空间大小为128KB~2MB,访问速度一般为10~20个CPU时钟周期。

③ L3:多个CPU共用,访问空间大小为2~64MB,访问速度一般为20~60个CPU时钟周期。

主存储器:可由CPU直接访问,可多个CPU共用,用来存放当前正在执行的程序和数据,访问空间大小一般在4~512GB,访问速度一般为200~300个CPU时钟周期。

辅助存储器:设置在主机外部,CPU不能直接访问,用来存放暂时不参与运行的程序和数据,需要时再将其传送到主存储器中。

1.1.4 指令的运行

CPU的控制器在时序脉冲的作用下,将指令计数器里所指向的指令地址(这个地址是在内存里的)送到地址总线去,然后CPU将这个地址里的指令读到指令寄存器中进行译码。

对于执行指令过程中所需要用到的数据,CPU会将数据地址送到地址总线,然后把数据读到CPU的内部存储单元(就是内部寄存器)暂存起来,最后运算器对数据进行处理加工,周而复始,一直执行下去,CPU执行指令过程如图1-11所示。

图1-11 CPU执行指令过程

一条指令的执行通常包括以下4个步骤,如图1-12所示。

(1)取指令:CPU的控制器从内存读取一条指令并放入指令寄存器中。

(2)指令译码:指令寄存器中的指令经过译码,决定该指令应进行何种操作(由指令里的操作码决定)及操作数的地址。

(3)执行指令:分为两个阶段,即“取操作数”和“进行运算”。

(4)修改指令计数器:决定下一条指令的地址。

图1-12 指令执行步骤 byZszzOfVJ0XNRsecRWjF0ijn+fKIZV3CGscNcLFEbeYFioiF0clXsxThqZC/Ncf

点击中间区域
呼出菜单
上一章
目录
下一章
×