软件开发搞定计算机组成原理:概述篇

1. 发展史

计算机的发展一共有四个阶段:

  • 第一阶段:电子管(下图)计算机。第一台电子管计算机是:埃尼阿克(ENIAC)(下下图)。
    在这里插入图片描述
    在这里插入图片描述

  • 第二阶段:晶体管(下图)计算机。比较出名的计算机:TX-0(全世界第一台)和PDP-1(带有屏幕)。

在这里插入图片描述
在这里插入图片描述

  • 第三阶段:集成电路计算机。操作系统在此诞生(IBM开发)。

在这里插入图片描述
(当时的电脑,跟我们以前的大头计算机很像了)
在这里插入图片描述

  • 第四阶段:超大规模集成电路计算机。一个芯片集成上百万个晶体管,比如CPU。

在这里插入图片描述

未来可能还有生物计算机、光子计算机、量子计算机等。腾讯和阿里巴巴(达摩院)有量子计算机实验室。

在这里插入图片描述

微型计算机的发展:微型计算机就是我们现在使用的个人计算机。是从计算机的第三个阶段开始的,早期是从单核CPU开始的,但发展到现代性能不够,所以出现了多核CPU(开始于2005,Intel奔腾系列)。

2. 计算机的分类

  1. 超级计算机

    • 功能最强,运算速度最快,存储容量最大的计算机。
    • 用应用于高科技领域,比如天气预报,加密解密,核聚变等。
    • 运算速度单位:TFlop/s = 每秒一万亿次浮点计算。
    • 就比如:Intel® Core™ i7-6700K CPU @ 4.00GHz ,它的算力是(百度):44.87 GFlop/s,转换:44.87 GFlop/s = 0.04487TFlop/s。也就是该CPU的算力比起超级计算机的CPU的算力十分之一都不到。
    • 2019/6/17的记录:美国的两台超级计算机“顶点”(Summit)和“山脊”(Sierra)仍占据世界排名前两位,中国超算“神威·太湖之光”和“天河二号”在世界排名第三和第四名。
  2. 大型计算机

    • 又称大型机、大型主机、主机等。
    • 具有高性能,可处理大量数据与复杂的运算。比如金融交易的数据,证券交易所的数据等。
    • 在大型机市场领域,IBM占据着很大的份额,IBM比较出名的大型计算机:IBM Z9。造价很贵,所以市场越来越小。
  3. 迷你计算机(服务器)

    • 也称为小型机,普通服务器。
    • 具备不错的算力,可以完成较复杂的运算。
    • 常见的普通服务器制造商:联想,华为,浪潮。云服务是建立在这基础上的。
    • 现在很多都是使用迷你计算机。
  4. 工作站

    • 高端的通用微型计算机,提供比个人计算机更强大的性能。

    • 类似于普通台式电脑,体积较大,但性能强劲

在这里插入图片描述

  1. 微型计算机

    • 又称为个人计算机,是最普通的一类计算机,我们现在用的。

3. 计算机的体系和结构

3.1 冯诺依曼体系

  • 定义:将程序指令和数据一起存储的计算机设计概念结构。

在这里插入图片描述

百度百科

现代计算机都是冯诺依曼计算机,具有如下功能:

  1. 把需要的程序和数据送至计算机中。
  2. 必须具有长期记忆程序、数据、中间结果及最终运算结果的能力。
  3. 能够完成各种算术运算、逻辑运算和数据传送等数据加工处理的能力。
  4. 能够根据需要控制程序走向,并能根据指令控制机器的各部件协调操作。
  5. 能够按照要求将处理结果输出给用户。

为了实现该功能,计算机必须具备五大基本组成部件

  1. 运算器用于完成各种算术运算、逻辑运算和数据传送等数据加工处理
  2. 控制器用于控制程序的执行,是计算机的大脑。运算器和控制器组成计算机的中央处理器(CPU)。控制器根据存放在存储器中的指令序列(程序)进行工作,并由一个程序计数器(简称PC)控制指令的执行。控制器具有判断能力,能根据计算结果选择不同的工作流程。
  3. 存储器用于记忆程序和数据,例如:内存。程序和数据以二进制代码形式不加区别地存放在存储器中,存放位置由地址确定。
  4. 输入设备用于将数据或程序输入到计算机中,例如:鼠标、键盘。
  5. 输出设备将数据或程序的处理结果展示给用户,例如:显示器、打印机。

在这里插入图片描述

但是,冯诺依曼有一个瓶颈:CPU和存储器速率之间的问题无法调和。CPU的速率一定是快于存储器的速率。

在这里插入图片描述

所以就有了现代计算机的结构。

3.2 现代计算机的结构

现代计算机在冯诺依曼体系结构基础上进行修改,但是主要来解决CPU与存储设备之间的性能差异问题。

在这里插入图片描述

但是存储器广义上是指磁带和硬盘,这里指的是内存和CPU的寄存器。

4. 计算机的层次

4.1 编译程序和解释程序

计算机不能理解我们的自然语言(比如:hello world),只能识别二进制。开发人员需要做的就是把自然语言转成高级语言,然而高级语言还需要自行转行,需要翻译程序转换成计算机可识别的语言。

翻译程序:把高级语言翻译成机器语言(目标程序),可分为编译程序和解释程序。

  1. 编译程序:也称为编译器,以高级编程语言的源程序作为输入,一次性翻译成以汇编语言或机器语言表示的目标程序作为输出。不过目标程序还需要经过链接才可以运行。链接就是目标程序和依赖库等串联起来。

    编译程序需要经历:词法分析、 语法分析、中间代码生成、代码优化、目标代码生成。

  2. 解释程序:也可以称为解释器(直译器),把高级编程语言的源程序一行一行直接转译执行。而不是一次性把整个程序都转译,像一位“中间人”,每次运行程序时都要先转成另一种语言再作运行。比如JS写好了就直接运行。

C、C++、Pascal、GO、最近火起来的swift等属于编译程序的语言,Python、PHP、JavaScript、Ruby等属于解释程序的语言。Java、C#属于编译+解释程序的语言。

在这里插入图片描述

汇编程序:把汇编语言翻译成机器语言。

编译程序:

  • 优点:编译一次就行,执行多少次都不会再编译了,除非修改了原代码。

  • 缺点:像我们平常在使用java时,每次改动源程序就要重新编译一下,当然现在我们用idea,eclipse等编辑器是把javac和java命令封装在一起的,每次按下run其实就是在重新编译然后执行。

解释程序:

  • 优点:不停机维护,有良好的兼容性。

  • 缺点:每次运行又得一行一行的转译。

4.2 计算机的层次与编程语言

目前的计算机分层:以后可能会变。

在这里插入图片描述

从底往顶:对于硬件的了解就行。

  1. 硬件逻辑层(了解):门、触发器等逻辑电路组成,属于电子工程的领域。
  2. 微程序机器层(了解):编程语言是微指令集。微指令所组成的微程序直接交由硬件执行
  3. 传统机器层(了解):编程语言是CPU指令集(机器指令)。编程语言和硬件是直接相关,不同架构的CPU使用不同的CPU指令集,比如intel生产的CPU所使用的CPU指令集不适合于AMD生产的CPU,不兼容。

到此:一条机器指令对应一个微程序,一个微程序对应一组微指令(微指令集)

  1. 操作系统层:向上提供了简易的操作界面,向下对接了指令系统,管理硬件资源。操作系统层是在软件和硬件之间的适配层
  2. 汇编语言层:编程语言是汇编语言汇编语言可以翻译成可直接执行的机器语言,完成翻译的过程的程序就是汇编器。
  3. 高级语言层:编程语言为广大程序员所接受的高级语言,高级语言的类别非常多,常见的高级语言有:Python、Java、C/C++、Go等。
  4. 应用层:满足计算机针对某种用途而专门设计,像我们的office办公软件等。

5. 计算机的计算单位

5.1 容量单位

计算机物理层面用高低电平记录信息,高电平使用1,低电平使用0。0/1称为bit(比特位),但是0/1能够表示的内容太少了,所以推出更大容量的表示方法——字节:1Byte = 8bits。

但是随着时代进步,字节也还是太少了,所以有了以下更高的容量单位:

在这里插入图片描述

注意:

  • 只有bit和Byte的转换比较特殊,永远记住:1Byte = 8bits
  • 然后从Byte到EB,相邻的转换都是1024倍(或2^10倍)

问题1:1GB内存,可以存储多少字节的数据?可以存储多少比特数据?

答:1GB = 1024 * 1024 * 1024 B = 1024 * 3 * 8 bits

问题2:为什么网上买的移动硬盘500GB,格式化之后就只剩465GB了?

答:硬盘商一般按1GB = 1000MB 这样的换算标记容量的,500GB在电脑真实容量的运算:

  • 先把500GB转成字节:500 000 000 000 Byte
  • 再除以3次1024,即把字节重新在计算机转换单位,得到465GB

500 100 0 3 102 4 3 = 465 G B \frac{500 * 1000^3}{1024^3}= 465GB

这并不是厂商或经销商以次充好欺骗消费者,而是硬盘厂商对容量的计算方法和操作系统的计算方法有不同而造成的,不同的单位转换关系造成的。所以不要被营销号带节奏了,动脑!

5.3 速度单位

  1. 网络速度
    • 在计算机网络也有说了,网络常用单位为Mbps或者M/s或Mbit/s
    • 像家里搞了联通100M的宽带,但是实际自己测试时不是100M,你可以注意一下电脑显示网速的单位,是MB/s或者KB/s。注意大写B(Byte)和小写b(bit)。所以联通的100M宽带在计算机上显示为:100Mbps / 8 = 12.5 MB/s,并且是指理论上可以到达的最高网速。
  2. CPU频率
    • CPU的速度一般体现为CPU的时钟频率。主流CPU的时钟频率都在2GHz以上。
    • CPU的时钟频率的单位一般是赫兹(Hz)
    • 赫兹(Hz):指的是每秒中的周期性变动重复次数的计量。假设蝴蝶的翅膀挥动的频率是15Hz,则表示每秒能挥动15次。像CPU的时钟频率为2GHz,表示每秒20亿次运算。

6. 计算机的字符集与编码

字符集(编码字符集):一组字符。

字符编码:把字符集中的字符编码为特定的二进制数,以便在计算机中存储。

6.1 字符编码集的历史

  1. ASCII码:使用7个bits就可以完全表示ASCII码,包含95个可打印字符,33个不可打印字符(包括控制字符)。ASCII即是字符集也是字符编码。ASCII码表相信在各大教材书都有,需要记住小写字母a和大写字母a的ASCII码,以十进制来记:小写字母a为97,大写字母A为65。因为字母有26个,那么B和b的ASCII通过A和a就可以知道了。

  2. Extended ASCII码:很多应用或者国家中的符号都无法表示,比如数学符号:“÷ ≠ ≥ ≈ π”,所以扩展ASCII码表。

  3. 字符编码集的国际化(ISO):世界上不同国家有不同语言,不以有限字符组合的语言,所以需要一个统一的标准。比如英文就26个字母组合,而中文的字符就更加复杂而且多。

了解我们国家的就行:

6.2 中文编码集

  1. GB2312:我国最先出现的字符集,全称为《信息交换用汉字编码字符集——基本集》,一共收录了 7445 个字符,包括 6763 个汉字和 682 个其它符号。
  2. GBK:GB2312不满足国际化标准,所以推出GBK。全称为《汉字内码扩展规范》,向下兼容GB2312,向上支持国际ISO标准,收录了21003个汉字,支持全部中日韩汉字。不论是GB2312还是GBK都是本地化编码,也就是在中国使用是没问题的,但是跨国使用就有问题,外国人要访问中国网站会乱码,除非他们手动在本地安装GB2312或GBK编码。所以推出了Unicode。
  3. Unicode:兼容全球的字符集,中文称为:统一码、万国码、单一码。Unicode定义了世界通用的符号集,UTF-*实现了字符编码。UTF-8以字节为单位对Unicode进行编码。

windows系统默认使用GBK编码。在安装IDEA后最好设置下字符编码:

在这里插入图片描述

发布了71 篇原创文章 · 获赞 75 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_41800884/article/details/104749434