计算机基本结构

1. 历史

  • 为了满足“二战”对计算机“火炮射击表”的需要,1943年开始设计ENIAC,ENIAC是世界上第一台通用电子计算机。

2. 冯诺依曼结构

最早在阿兰·图灵提出了理想图灵机模型,模型给定一个无限长的纸带,纸带上无限个小格子,小格子中写有相关的信息,机械读头根据一个个小格子的信息做相关的操作并能够来回移动。比方说对于一个1+1=2的计算。我们可以定义读头度到“+”符号以后,就依次移动读头获取后面仅挨着的两个格子的数据,最后把计算结果写入第二个数据的下一个格子中,整个过程如下:

理想图灵模型终归是理想,后来冯·诺依曼《关于EDVAC的报告草案》中论述了两个重要的思想,存储程序(而不是开关连线)和二进制(而不是十进制),并明确了计算机的5个组成部分。

  • 计算机应由运算器(CA,central arithmetical)、控制器(CC,central control)、存储器(M,memory)、输入设备(I,input)和输出设备(O,output)五个部分组成
  • 数据和程序都以二进制代码的形式不加区分的放在存储器中
  • 计算机在工作时能够自动地从存储器中取出指令并加以执行

运算器、控制器、存储器、输入和输出设备。

 哈弗处理结构是一种将程序指令存储和数据存储分开的存储器结构。其中,中央处理器首先到程序之灵存储中读取程序指令内容,解码以后得到数据地址,再到相应的数据存储器中读取数据,并进行下一步的操作(通常是执行)。程序指令存储和数据存储分开,数据和指令的存储可以同时进行,并且读写数据线宽度可以不同。与冯·诺依曼结构处理器比较,哈弗结构处理器有两个明显特点:

1、使用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存;

      2、使用独立的两条总线,分别作为CPU与每个存储器之间的专用通信路径,而这两条总线之间毫无关联。

      哈佛结构的微处理器通常具有较高的执行效率。其程序指令和数据指令分开组织和储存的,执行时可以预先读取下一条指令

3. CPU执行流程

YouTube上的一个视频How does CPU execute program,是一个很好的CPU执行程序原理的总结,英文水平还行的人建议看原视频,就不用听我瞎BB了。虽然没有字幕,如果能看懂里面的PPT,就基本能理解了。CPU硬件逻辑清晰的给出一套状态机机制,状态机内部可以正常的按照顺序执行某段代码指令,并将数据吸收处理输出。状态机逻辑运作的流程需要我们通过代码来控制,设计的硬件资源有内存和各种IO外设,存储单元可以存储指令代码和数据,各种IO集成电路设备提供形形色色的外部对接功能。基于机器码、汇编码和C甚至高级语言编写的代码(某种功能、操作系统、复杂的应用程序),经过编译原理一套处理结束以后,最终都是机器码二进制文件。二进制代码文件下载到固定的一个其实0位置,初始化上点硬件做完该有的流程以后,便开始从这里开始进行代码执行。

Take the first instruction as an example , It went through 5 A step :

  1. hold CS:IP The content goes into the address adder , To calculate the 20 Physical address of bit 20000H;

  2. The control circuit turns 20 Address of bit , Into the address bus ;

  3. In the memory 20000H Instructions at the unit B8 23 01, It is sent to the instruction buffer through the data bus ;

  4. Instruction offset register IP I want to add 3, Point to the next offset address waiting to be executed ( Because the instruction code B8 The length representing the current instruction is 3 Bytes );

  5. Execute instructions in the instruction buffer : Put the number 0123H Into the register AX in ;

2.1. 程序的运行机制——CPU、内存、指令的那些事

  • 序言
    说起计算机大家并不陌生,在计算机上又运行着各种程序,如QQ、微信等。这些程序有可以为我们做很多事情,能聊天、能玩游戏等等。那么这些看似复杂的程序在计算机中到底是怎么运行起来的呢?其实非常简单,我们不妨一起探讨一下。
    作为程序员我们必须理解CPU是如何运行的,特别是要弄清楚负责保存指令和数据的寄存器的机制。了解了寄存器,也就自然而然的理解了程序的运行机制。
  • CPU的构成
    在程序运行流程中,CPU所负责的就是解析和运算最终转换成机器语言的程序内容。CPU从功能上来看由寄存器、控制器、运算器、时钟构成。
这里写图片描述这里写图片描述
CPU的构成CPU是寄存器的集合体

寄存器:用来暂存指令、数据等处理对象。
控制器:负责把内存上的指令、数据等读入寄存器、并根据指令的执行结果来控制计算机。
运算器:负责运算从内存读入寄存器的数据。
时钟:负责发出CPU开始计时的时钟信号

  • 内存的作用
    内存指的就是计算机的主存储器,其主要负责存储指令和数据。CPU通过内存地址值来读取或写入指令和数据。注意:内存中的指令和数据会随着计算机的关机日自动清除。
    在理解了CPU和内存后,大家对程序的运行机制的理解是不是也加深了一些?程序启动后,根据时钟信号,控制器会从内存中读取指令和数据。通过对这些指令加以解析和运行,运算器就会对数据进行运算,控制器根据运算结果控制计算机。
  • 决定程序流程的程序计数器
    下面我们通过将123和456两个数相加,并将结果输出到显示器的实例,说一下程序计数器是如何工作的。
    当用户发出启动程序的指示后,操作系统会把硬盘中保存的程序复制到内存中。如下图是程序启动时内存内容的模型。
    这里写图片描述
    操作系统把程序复制到内存后,会将程序计数器设定为0100(假设内存地址0100是程序运行的开始地址),然后程序便开始运行。CPU每执行一个指令,程序计数器的值就会自动加1。所以,程序计数器决定着程序的流程。
  • 指令
    从功能方面来看,机器语言指令可分为数据传送指令、算数指令、跳转指令、call/return指令。

    数据传送指令:寄存器和内存、内存和内存、寄存器和外围设备之间的数据读写操作
    运算指令:用累加寄存器执行算术运算、逻辑运算、比较运算和位移运算
    跳转指令:实现条件分支、循环、强制跳转等
    call/return指令:函数的调用/返回调用前的地址

  • 函数调用
    call指令和return指令是如何实现函数调用的呢?
    其实call指令在将函数的入口地址设定到程序计数器之前,call指令会把调用函数后要执行的指令地址存储在名为栈的主存内。函数处理完毕后,再通过函数的出口来执行return命令。return命令的功能就是把保存的栈中的地址设定到程序计数器中。如下面的图示,MyFunc函数被调用之前,0154地址保存在栈中。MyFunc函数的处理完毕后,栈中的0154地址就会被读取出来,然后再被设定到程序计数器中。

这里写图片描述这里写图片描述
程序调用函数示例函数调用中程序计数器和栈的职能

一个程序从源代码到可执行程序的过程

3.2. 实例代码执行 

#include "stdio.h"
int main(int argc, char const *argv[])
{
  printf("Hello World!\n");
  return 0;
}

反汇编代码可变长度指令结果:

对应的最小计算机显示结果如下:

3. 现代计算机组成

现代计算机硬件组成处理器、存储器、I/O设备、总线。

处理器划分不同类型

I/O设备分为设备控制器与设备。设备控制器将特定类型设备的协议和总线接口抽象化,使得软件对外部设备进一步简单化控制。设备是某种属性设备的集合,实现某种特定的物理功能。

总线是设备之间连接的硬件线路,这个是完全硬件的概念。对于控制器和设备而言,其中总线包含了控制器和对一个的硬件线路,总线与接口或者协议是一体的概念。其中接口或者协议将某类型设备控制内容抽象化,控制器与设备端都可以各自按照协议规定生产设备。然后控制器和设备之间通过相应的总线链接在一起实现设备的通信。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值