计算机程序是如何运行的?——从逻辑电路到计算机程序

目录

1.CPU工作原理

1.1 算数逻辑单元(ALU)

1.2 随机存取存储器(RAM)

1.3 中央处理器(CPU)

2.CPU如何执行我们写的程序?

1.CPU工作原理

1.1 算数逻辑单元(ALU)

算术逻辑单元(Arithmetic&logical Unit)是中央处理器(CPU)的执行单元,是所有中央处理器的核心组成部分,由"And Gate”(与门)和"Or Gate"(或门)构成的算术逻辑单元,主要功能是进行二位元的算术运算,如加减乘(不包括整数除法)。基本上,在所有现代CPU体系结构中,二进制都以补码的形式来表示。

这个是ALU的一个例子(半加器)。

用两个半加器做了一个全加器,这就完成了一次抽象(把半加器封装成了一个模块,用它和逻辑电路继续组成其他更复杂模块)。

依次类推,做了一个八位加法器。

类似地,还有这些操作。

总结:ALU就是逻辑电路组成的计算器!

1.2 随机存取存储器(RAM)

现在我们算出一个数了,得存起来,不然白算了。这就涉及到内存(CPU中负责储存)的概念。

先做一个简单的电路存0和1。

利用前述电路,制作一个锁存器(可以存储一位数据)。

进一步做一个门锁(可以控制是否存储数据)。

把门锁抽象,这就是一个能存一位数据(1 bit)的盒子,这就是锁存器

在锁存器的基础上制作一个能存更多位数的寄存器

将门锁排列成矩阵连接起来,就能存256位的数据。

把一个数据存在矩阵中的某个位置,它的地址如上图表示。

只是一个256位的内存。

这上述两幅图就是随机存取存储器(RAM)的结构。

随机存取存储器(英语: Random Access Memory,缩写: RAM),也叫主存,是与CPU直接交换数据的内部存储器。它可以随时读写(刷新时除外),而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储介质。RAM工作时可以随时从任何一个指定的地址写入(存入)或读出(取出)信息。它与ROM的最大区别是数据的易失性,即一旦断电所存储的数据将随之丢失。RAM在计算机和数字系统中用来暂时存储程序、数据和中间结果。

1.3 中央处理器(CPU)

让CPU进行计算,就是让CPU执行指令。在上图的例子中前四位是指令(二进制形式的操作码,相当于控制相应逻辑电路的开关),后四位是指令的地址。

上图是一个CPU的结构。其中,RAM用于储存,控制单元用于管理指令,ALU负责计算。

控制单元,(Control Unit)负责程序的流程管理。正如工厂的物流分配部门,控制单元是整个CPU的指挥控制中心,由指令寄存器IR(Instruction Register)、指令译码器ID(Instruction Decoder)和操作控制器OC(Operation Controller)三个部件组成,对协调整个电脑有序工作极为重要。控制单元可以作为CPU的一部分,也可以安装于CPU外部。

2.CPU如何执行我们写的程序?

程序在CPU中的运行,就是在用软件控制硬件:

红框内就是指令。指令是CPU制造时刻在上面的电路,随着CPU的发展,其中的指令也越来越多,指令越多相当于CPU的功能越强大。CPU本身有各种指令,我们按顺序排序这些指令让CPU去计算,这就是计算机在执行一段程序。那么,这一段程序是如何进入CPU的内存中的呢?或者说,如何在计算机内存中按我们的想法让计算机执行指令?

由于计算机只懂得二进制语言,程序员想了一个技巧,写二进制程序来帮忙它可以读懂文字指令,自动转成二进制指令,这种程序叫汇编器。汇编器读取用汇编语言写的程序,然后转成"机器码"。

汇编器(Assembler)是将汇编语言翻译为机器语言的程序。一般而言,汇编生成的是目标代码,需要经链接器(Linker)生成可执行代码才可以执行。汇编语言是一种以处理器指令系统为基础的低级语言,采用助记符表达指令操作码,采用标识符表示指令操作数。作为一门语言,对应于高级语言的编译器,需要一个"汇编器"来把汇编语言原文件汇编成机器可执行的代码。常用的高级语言编译器有Microsoft公司的MASM系列和Borland公司的TASM系列编译器,还有一些小公司推出的或者免费的汇编软件包等。
除了汇编语言之外,我们常用的高级语言则通过编译器将程序变成机器码(二进制语言)。
编译程序(Compiler,compiling program),也称为编译器,是指把用高级程序设计语言书写的源程序,翻译成等价的机器语言格式目标程序的翻译程序。编译程序属于采用生成性实现途径实现的翻译程序。它以高级程序设计语言书写的源程序作为输入,而以汇编语言或机器语言表示的目标程序作为输出。编译出的目标程序通常还要经历运行阶段,以便在运行程序的支持下运行,加工初始数据,算出所需的计算结果。

上述文字是本人学习计算机组成原理过程中的一些记录,主要针对的问题是“我们写的程序是如何在计算机硬件上运行的?”。对于一些理解有错误的地方望读者指出。

视频课程出自:【【计算机科学速成课】[40集全/精校] - Crash Course Computer Science】https://www.bilibili.com/video/BV1EW411u7th?p=11&vd_source=6d6e1e58ee045a530b17ea7bb3e69e72

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值