Java进阶之计算机组成原理概述
1.计算机的发展简史
1.1 计算机发展的四个阶段
自从1945年至今,计算机经历了电子管计算机,晶体管计算机,集成电路计算机以及超大规模集成电路计算机。
电子管计算机(1945年-1957年)
第二次世界大战是电子管计算机产生的催化剂,而最著名的电子管计算机是来自美国的埃尼阿克(ENIAC),这一时期的计算机有如下特点- 集成度小,占用空间大
- 功耗高,运行速度慢
- 操作复杂,更换程序需要接线
晶体管计算机(1957年-1964年)
1948年,贝尔实验室的三个科学家发明了晶体管,相比电子管而言,晶体管有着更小的体积,更低的功耗以及更高的运算效率。而全世界第一台晶体管计算机TX-0诞生于麻省理工大学的MIT林肯实验室,而当时性能最高的计算机是PDP-1,它具备4K的内存,每秒可以执行20W条指令,同时配备了512*512的显示器,晶体管相对于电子管计算机而言:- 集成度相对较高,占用空间相对较小
- 功耗相对较低,运行速度较快
- 操作相对简单,交互更加方便
集成电路计算机(1964年-1980年)
集成电路计算机出现的背景是德州仪器的工程师发明了集成电路(IC)
- 计算机变得更小
- 功耗相对较低,
- 运行速度较快
- 具备进入千家万户的条件在集成电路计算机阶段,IBM有两款畅销的计算机 IBM 7094和IBM 1401 ,但是这两款计算机主打的功能不同,并且相互无法兼容,而且企业购买IBM 7094和IBM1401后也不愿意投入两组人力开发,在此背景下IBM推出了兼容的产品System/360,也就是操作系统的雏形,它的出现使得不同的电子元器件,不同电路的计算机都能在同一个操作系统下运行
超大规模集成电路计算机(1980年-今)
CPU就是超大规模集成电路的典型产品,一个芯片可以集成上百万的晶体管。
而且超大规模集成电路计算机速度更快,体积更小,价格更低,更能被大众接受,同时在此阶段计算机用途也变得丰富起来,可以用于文本处理,表格处理以及高交互的游戏和应用。
而乔布斯在这个阶段推出了Apple,Apple二代。未来计算机
随着计算机的发展,未来会出现生物计算机和量子计算机。
生物计算机是以蛋白质分支作为主要原材料,和人体结合起来进行相关的运算。而且生物计算机体积小,不易损坏,提供生物级别的自动修复以及不受信号干扰和无热损耗。
量子计算机是遵循量子力学的物理计算机。目前量子计算机已经有相关的研究成果- 2013年5月,谷歌和NASA发布了D-Wave Tow
- 2017年5月,中国科学院宣布制造出光量子计算机。
- 2019年1月,IBM展示了世界首款商业化量子计算机而且目前国内的阿里和腾讯在量子计算机领域进行相关的研究。
1.2 微型计算机的发展历史
微型计算机主要是计算机发展的第三个阶段集成电路计算机开始。
微型计算机的发展主要是从计算能力区分的,在早期微型计算机是使用的单核CPU,而单核CPU的发展也经历了如下几个阶段
- 1971年-1973年 500KHz频率的微型计算机(字长8位)
- 1973年-1978年 高于1M频率的微型计算机(字长8位)
- 1978年-1985年 500MHz频率的微型计算机(字长16位)
- 1985年-2000年 高于1GHz频率的微型计算机(字长32位)
- 2000年-今 高于2GHz频率的微型计算机(字长64位)而关于CPU性能,还有一个著名的定律-摩尔定律:当价格不变的情况下,集成电路元器件每隔18-24个月会提升一倍,性能就会提升一倍。但是到21世纪,单核CPU逐渐出现了性能的瓶颈。而多核CPU的出现是为了解决单核CPU的性能瓶颈
- 2005年CPU产商Intel发布了奔腾系列CPU
- 2006年CPU产商Intel发布了酷睿四核CPU
- 目前在个人电脑可以选配Intel酷睿系列16核CPU,而服务器领域可以选择Intel至强系列56核CPU
2.计算机的分类
计算机可以按照不同的用途分为超级计算机,大型机,小型机,个人计算机。
- 超级计算机超级计算机是功能最强,运算速度最快,存储容量最大的计算机,主要用于国家高科技领域尖端技术研究,我们使用每秒一万亿浮点数计算(1TFlop/s)指标来衡量超级计算机的性能。如果想要了解超级计算机的排名,可以访问网站 https://www.top500.org/。
- 大型计算机大型计算机又称为大型机、大型主机、主机等等,大型计算机具有高性能。可处理大量数据与复杂运算,应用场景通常是银行、证券等金融机构。在大型机市场领域,IBM占据着很大的份额。由于大型机造价高昂,不够灵活,伸缩性弱,目前很多企业替换成小型机。阿里巴巴在2008年发起去IOE行动,I就是IBM大型机,O就是商业数据库Oracle,E就是EMC存储,IOE代表了高成本,高维护费用的存储系统。去IOE就是将大型机换成了普通的服务器,将Oracle替换成了分布式的MySQL,去IOE行动直接驱动了阿里云的诞生。
- 服务器服务器也被称为小型机,普通服务器,相对于大型机而言,不要特殊的空调场所,同时也具备不错的算力。常见的服务器厂商包括戴尔,联想,IBM。普通服务器已经替代了传统的大型机,成为大规模企业计算机的中枢纽,比如国内的阿里云、腾讯云、华为云都是基于服务器构建的。
- 工作站工作站是高端的通用微型计算机,可以提供比个人计算机更强大的性能,类似于普通台式电脑,体积大,性能强劲,例如Mac Pro。
- 微型计算机微型计算机又称为个人计算机,是最普通的一类计算机,可以分为台式机、笔记本电脑、一体机,微型计算机是成本最低的,但是从构造本质来讲,个人计算机与超级计算机、大型机、小型机、工作站没有区别。
3.计算机的体系结构
3.1 冯诺依曼体系
冯诺依曼体系就是将程序指令和数据一起存储的计算机设计概念结构。
早期的计算机仅能运行固定用途的程序,如果想要运行别的程序,必须要更改计算机结构、重新设计电路。而冯洛伊曼是把程序存储起来,并设计通用的电路。存储程序指令,设计通用电路。
- 必须有存储器,存储运行的程序和数据,长期记忆程序、数据、中间结果和最终结果的运算能力
- 必须要有控制器,控制程序的流程以及数据的流转
- 必须要有运算器,负责完成数据的算数、逻辑运算
- 必须要有输入设备,负责完成程序指令和数据的输入
- 必须要要输出设备,负责完成程序的处理结果输出现代计算机都是属于冯诺依曼机。CPU是由运算去和控制器组成,而冯诺依曼结构是将存储器和CPU分开,会导致冯诺依曼瓶颈:CPU和存储器速率之间的问题无法调和,CPU经常空转等待数据的传输,这样无法充分利用CPU。
3.2 现代计算机的结构
现代计算机结构由冯诺依曼结构基础之上进行修改,主要是解决CPU和存储器速度差异的问题:存储器、运算器和控制器集中在一块芯片上。
现代计算机结构以存储器为核心的结构。而CPU是由运算器、控制器和存储器(寄存器)组成
https://blog.csdn.net/fayfayfaydyt/article/details/81603250
4 计算机的层次与编程语言
4.1 程序编译和程序解释
由于高级编程语言和计算机底层语言是互不相通的,计算机最底层只能识别01010这种二进制的机器指令,因此需要使用工具进行语言之间的转换。这个就是程序编译或者解释的由来。
为了理解程序编译和程序解释,这里引入两种语言,分别是高级计算机语言L1,以及低级计算机语言L0。
- 程序编译开发人员使用高级编程语言L1编写的应用程序通过编译器生成成计算机底层能够识别的低级语言L0,L0就是计算机实际执行的语言,而编译器生成的计算机底层识别的二进制机器指令过程就是程序编译。常见的编译型语言有C/C++/Objective-C/Go
- 程序解释首先使用L0语言实现另外一个程序,也就是解释器,然后将开发人员使用高级语言L1编写的应用程序作为输入,每一句L1编写的程序都会在L0中作为等价的转换然后执行,解释的过程就是由L0编写的解释器去解释L1程序。常见的解释型语言有PHP,Python,JavaScript。
而Java和C#属于编译+解释型语言,以Java为例子,Java程序在运行之前首先被编译成Java字节码,然后在JVM虚拟机上解释运行。
4.2 计算机程序和编程语言
计算机的层次由上到下可以分为如下几个层次:
- 应用层
- 高级语言层高级语言就是用来开发日常应用的计算机语言,常见的高级语言有C/C++/Java/Python/Go等等。
- 汇编语言层汇编语言也是一种编程语言,汇编语言可以编译成直接执行的机器语言,而完成编译的过程就是汇编器,从汇编语言开始使用的语言就是人类比较容易理解的语言。
- 操作系统层操作系统主要是用于给应用软件提供运行平台,同时管理和调度硬件资源。位于软件和硬件的适配层。
- 传统机器层编程语言主要是CPU指令集(机器指令),而开发人员使用机器指令编写的程序可以交由微程序直接进行解析,指令集存储在CPU内部,对CPU的运算进行指导和优化应用程序。CPU可以通过指令集运行程序以及进行相应的逻辑处理。传统机器层的编程语言和硬件直接相关,但是由于不同架构的CPU使用的是不同的CPU指令集,也就是英特尔的CPU上运行的程序不能在AMD的CPU上运行。
- 微程序机器层编程语言主要是微指令集,微指令所组成的微程序直接交由硬件执行。主要由硬件厂商的开发人员编写。一条机器指令对应一个微程序,一个微程序对应一组微指令,微程序=机器指令。
- 硬件逻辑层硬件逻辑层主要有门电路、触发器等逻辑电路组成,所属电子工程领域。
传统机器层、微程序机器层和硬件逻辑层属于实际机器层,和物理设备相关。操作系统层、汇编语言层、高级语言层和应用层称为虚拟机器。而操作系统层、汇编语言层、高级语言层统称为系统软件,应用层主要是完成日常任务的各种程序,例如Office,微信等等
1.5 计算机的计算单位
1.5. 容量单位
在购买电脑时,通常会选择高配置的内存、硬盘。例如最新款(2019)15寸的macBookPro已经可以选配32G内存和4T的固态硬盘,而这里的32G和4T就是常用的容量单位。
在物理层面,我们使用高低电平来记录信息,通常使用高电平表示1,低电平表示0,因此在计算机底层只能认识0,1两种状态。而0,1能够表示的内容太少了,迫切需要更大的容量表示方法,因此诞生了字节(Byte),千字节(KB),兆字节(MB),吉字节(GB),太字节(TB),拍字节(PB),艾字节(EB),它们之间的换算关系如下所示
1. 1EB=1024PB
2. 1PB=1024TB
3. 1TB=1024GB
4. 1GB=1024MB
5. 1MB=1024KB
6. 1KB=1024B
7. 1Byte=8bit
位(bit)是最小的计算机容量单位,通常用于门电路。而字节(Byte)表示网络传输,文件大小,是最基本的容量单位。兆字节(MB)表示网速的容量单位吉字节(GB)通常用于表示计算机内存、磁盘的容量单位太字节(TB),拍字节(PB)通常是用于表示云硬盘的容量单位艾字节(EB)通常是用于表示数据中心的容量单位
现在通常笔记本的内存通常是8G,16G,32G,64G等等,而运行在笔记本之上的操作系统普遍都是64位的,因为32位系统只能使用4G内存,下面是4G的内存换算
4G=2^2 * 2^10 * 2^10 * 2^10 =4*1024*1024*1024=2^32
在购买内存或者买移动硬盘时,通常使用的存储单位就是GB或者是TB,但是在买4T的移动硬盘时,实际的可用容量却只有3T多,因为计算机的存储单位是以2的10次方(即1024)换算,而硬盘厂商们是以1000为换算单位。
4T的硬盘换算成位如下所示
4T=4*1024GB*1024MB*1024KB*1024B*8bit
而硬盘厂商的实际容量
4T=1000*1000*1000*1000*8
因此实际的可用容量是
4*1000*1000*1000*1000/1024/1024/1024/1024≈3.63T
而在一些互联网巨头(例如国内的BAT,国外的亚马逊、苹果、微软、谷歌,脸书)公司中,可能使用到比TB更大的海量数据,也就是PB或者EB,它们的换算单位如下所示。
1PB=1024TB1EB=1024PB
5.2 速度单位
5.2.1 网络速度
网络常用的单位是Mbps而网络带宽提供商(例如长城宽带)声称的百兆带宽实际上是100Mbit/s,但是100M光纤测试的峰值速度只会有12MB/s,它们之间的换算是100Mbit/s=(100/8)MB/s=12.5MB/s。
5.2.2 CPU速度
CPU的速度一般是由CPU的时钟频率所体现的,而时钟频率的单位是赫兹(HZ),目前主流的CPU时钟频率一般都在2GHz以上,而赫兹(Hz)其实就是秒分之一,也就是每秒钟的周期性变动重复次数的计量。2GHz=21000^3Hz=2100010001000=20亿,也就是说2GHz的CPU每秒可以变化20亿次。
1.6 计算机的字符与编码集
6.1 字符集编码
在计算机底层(内存、硬盘)都是使用01001二进制的方式存储数据,而字符编码集是描述了计算机数据(例如字符数据)和底层二进制数据的对应关系,例如在ASC||码中字符a对应的十进制整数是97,字符A对应的十进制整数是65。
6.2 字符编码集的历史
6.2.1 ASC||码
由于计算机最早是诞生在英美,因此最早的字符集是ASC||,用于表示日常开发中常用的大小写字母以及常用的符号,使用7bits表示,包含95个可打印字符课33各个不可打印字符(包括控制字符),95+33=128,即2的7次方。
6.2.2 可扩展的ASC||码
随着计算机的发展以及逐渐普及,ASC||码在很多应用或者国家中的符号无法表示,例如数学符号"≠,≥,≈,π",因此对ASC||进行扩充,由原来的7bit扩充到8bits,因此可以表示256个字符。扩展的运算符增加了数学运算符、带音标的欧洲字符以及其他常用符、表格符等等。
6.2.3 Unicode
随着计算机的进一步发展。越来越多的国家开始使用使用计算,而对于欧洲、中亚、拉丁美洲国家的语言多样性,由于语言体系不一样,不以有限字符组合的语言,而中国、韩国、日本的语言最为复杂。
Unicode定义了世界通用的符号集,可以表示世界上所有的国家、所有语言的文字、符号,使用UTF-8,UTF-16,UTF-32实现了编码。
UFT-8:一种变长的编码方案,使用 1~6 个字节来存储;UFT-32:一种固定长度的编码方案,不管字符编号大小,始终使用 4 个字节来存储;UTF-16:介于 UTF-8 和 UTF-32 之间,使用 2 个或者 4 个字节来存储,长度既固定又可变。
6.2.4 中文编码集
1980年国内发布了中文编码集 GB2312,一共收录了7445个字符,包含6763个汉字和682个其他符号,但是GB2312不符合国际标准,后来在1995年推出了GBK编码,向下兼容GB2312,向上支持国际ISO标准,GBK收录了21003个汉字,支持全部中日韩汉字。
但是GBK,GB2312都只是本地化的编码集,如果中国人使用GBK或者GB2312开发了一个网站程序,被国外的用户访问了,但是国外的用户不支持GBK或者GB2312,那么看到的网站内容就是乱码。
6.2.5 字符集编码实践
在国内,Windows系统的默认编码是GBK编码,而日常开发中最常使用的是UTF-8字符集
Java进阶之计算机组成原理概述相关推荐
- 【计算机组成原理-chapter1】计算机组成原理概述
文章目录 1. 计算机的发展历程 2. 计算机硬件的基本组成 2.1 早期冯·诺依曼结构 2.2 现代计算机结构 2.3 小结 3. 认识各个硬件部件 3.1 主存储器的基本组成 3.2 运算器的基本 ...
- 第1章 计算机组成原理概述
文章目录 前言 1.0 课程简介 1.0.1 课程的地位 1.0.2 课程学习思路 1.0.3 课程组成 1.1 计算机系统简介 1.1.1 计算机组成 1.计算机的类型 2.计算机的组成 3.软件组 ...
- 计算机组成原理 概述
这段时间在MOOC上学习刘宏伟教授讲的计算机组成原理,把一些学习中的重点知识和困难记下来,方便以后复习. 一.计算机系统简介 1.组成 而计算机软件分为系统软件和应用软件 2.结构层次 硬件主要包括实 ...
- 【计算机组成原理】计算机组成原理——概述篇
计算机发展历史 电子管计算机(1946年--1958年) 第一台计算机为ENIAC诞生于美国宾夕法尼亚大学 特点: 1. 集成度小,空间占用大 2. 功耗高,运行速度慢 3. 操作复杂,更换程序需要接 ...
- 计算机组成原理 王道考研2021 第一章:计算机组成原理概述 -- 计算机的工作过程(从源程序到可执行文件)、计算机的层次结构、计算机软件的分类、三种级别的语言
1. 计算机的工作过程 计算机的工作过程分为以下三个步骤: 把程序和数据装入主存储器. 将源程序转换成可执行文件. 从可执行文件的首地址开始逐条执行指令. 1.1 从源程序到可执行文件 预处理阶段:预 ...
- 计算机组成原理——概述3
计算机系统的层次结构 计算机系统的组织 硬件 -- 是指构成计算机系统的实体和装置之类的有形设备,是组成计算机系统的物质基础. 软件 -- 是指由硬件所表达的各种内在信息,包括数据与控制程序.因为它们 ...
- 计算机组成原理——概述2
计算机的诞生和发展 冯.诺依曼思想的产生背景 EDVAC(冯.诺依曼思想)--存储程序通用电子计算机 EDVAC阐述了电子计算机和程序设计的新思想,是计算机发展史上一个划时代的文献,宣告电子计算机时代 ...
- 计算机组成原理——概述1
主要内容: 计算机的基本概念 计算机的诞生和发展 系统硬件组成(主要部件.系统结构) 计算机的性能指标 计算机的基本概念 电子计算机--是一种可以存储程序,并且通过执行程序指令,可以自动.高速.精确地 ...
- 计组高分笔记:【06】计算机组成原理概述 「单总线 | 双总线 | 三总线 | 总线仲裁 | 总线标准 | 总线定时 | 同步定时 | 异步定时 | 半同步通信 | 分离式通信」
文章目录 1. 总线概述 1.1 基本概念 1.2 总线的分类及结点结构 1.2.1 系统总线结构 1.2.1.1 单总线结构(系统总线) 1.2.1.2 三总线方式(主存总线.I/O总线.DMA总线 ...
- 计算机原理概述,计算机组成原理-概述
2020-05-16 计算机起源可以参考 -- <计算机与人脑>- 是美国科学家约翰·冯·诺依曼创作的电子计算机学著作,1958年首次出版. 什么是计算机? 计算机(computer)俗称 ...
最新文章
- 国内最优秀的Leangoo敏捷项目协作工具
- 上海海事大学百度智慧交通车模介绍
- python-leepcode-作用解析 - 5-27
- mysql隔离级别底层实现_1、深入理解mysql四种隔离级别及底层实现原理(MVCC和锁)...
- 多态部分作业 2.编写2个接口:InterfaceA和InterfaceB;在接口InterfaceA中有个方法void 输出大小写字母表
- 转:在RHEL5系统中搭建iSCSI存储服务器
- vue中的适配:px2rem
- adb android源码分析,Android源码分析(十六)----adb shell 命令进行OTA升级
- 优化自定义函数_Pandas常见的性能优化方法
- Hyperledger Fabric 或 Composer 查看当前节点加入的是哪个channel
- 修改mysql字段长度
- docker mac linux镜像制作,Docker镜像制作方法
- 阿里云网盘开启公测!不限速、2T永久免费空间!!
- 互联网大厂的如厕自由
- Python爬取淘宝商品信息
- 3D建模京东商品3D展示怎么做?
- 织梦后台怎么上传mp4视频到网站中
- ENVI App Store
- 大数据是什么?大数据可以做什么?大数据实际做了什么?大数据要怎么做?
- 主动/被动唤醒源与网络主动/被动唤醒