码迷,mamicode.com
首页 > 其他好文 > 详细

计算机硬件基础

时间:2018-03-26 00:52:03      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:sys   时钟周期   unit   基本   显示   经历   input   有一个   打印机   

计算机硬件包括五大部分

  • 控制器:计算机指挥系统,通过地址访问存储器,从存储器中取出指令,经过编译分析后,根据指令分析结果产生响应的操作控制信号作用于其他部件,使各个部件在控制器控制下有条不紊的工作
  • 运算器:实现算术运算和逻辑运算的部件
  • 存储器:计算机用来存放所有数据和程序的记忆部件,基本功能就是按指定的地址写入或者取出信息。计算机存储器可分两大类:1.内存存储器,也就是内存;2.外存储器或者说辅助存储器。存储器由若干个存储单元组成,每个存储单元都有一个地址,计算机通过地址对存储单元进行读写。存储器所包含的字节数称为存储容量,单位:B、KB、MB、GB、TB等
  • 输入设备:是向计算机中输入信息(程序、数据、声音、文字、图形、图像等)的设备。常见的输入设备有:键盘、鼠标、图形扫描仪、触摸屏、条形码输入器、光笔等。 外存储器也是一种输入设备。
  • 输出设备:主要有显示器、打印机和绘图仪等。外存储器也当作一种输出设备。


控制器+运算器=CPU,CPU、内存(主存储器)以及其他I/O设备都由一条系统总线(bus)连接起来并通过总线与其他设备通信

cpu是人的大脑,负责控制全身、进行运算

内存是人的记忆,负责临时存储

硬盘是人的笔记本,负责永久存储

输入设备是耳朵或眼睛或嘴巴,负责接收外部的信息存入内存

输出设备是你的脸部(表情)或者屁股,负责经过处理后输出的结果

以上所有的设备都通过总线连接,总线相当于人的神经

CPU同一时刻只能干一件事 

 

硬件最核心的三点:硬盘、内存、CPU

数据处理顺序:

  • CPU数据来自内存,数据要永久保存的话从内存刷到硬盘;
  • 硬盘数据加载到内存,CPU从内存拿数据

  

处理器

通常将运算器和控制器合称为中央处理器(Central Processing Unit,CPU)。其中运算器用来主要负责程序运算与逻辑判断,控制器则主要协调各组件和各单元的工作,所以CPU的工作主要在于管理和运算。可以说计算机的大脑就是CPU,它从内存中取指令->解码->执行,然后再取指->解码->执行下一条指令,周而复始,直至整个程序被执行完成

 

CPU读取的数据都是从主存储器(内存)来的!主存储器内的数据则是从输入单元所传输进来!而CPU处理完毕的数据也必须先写回主存储器中,最后数据才从主存储器传输到输出单元。

 

CPU有自己指令集,人编写的代码要转换成CPU能识别的指令集,然后CPU执行

目前世界上常见到的两种主要的CPU种类:分别是精简指令集(RISC)与复杂指令集(CISC)系统

 

寄存器

  如图,CPU速度最快,从内存取数据,内存会有来不及供给的情况,CPU就需要等着内存,降低CPU执行速度;

  就像我们不让CPU直接从硬盘拿数据一样,速度太慢,所以我们加了内存,比硬盘速度快,同理,在内存和CPU之间加一个设备,那就是寄存器;

  寄存器比内存速度快,容量比内存小,临时存储

  

技术分享图片

寄存器分类

通用寄存器

  • 用来保存变量和临时结果,CPU取的时候速度更快

程序计数器

  • 保存将要取出的下一条指令的内存地址,指令取出后,计数器就被更新,以便执行后期的指令(通俗点就是保存程序运行的状态)

堆栈指针

  • 还有一些数据量很大的数据,寄存器容量有限,只能放到内存中;CPU跟内存要数据,需要找到数据存放位置,这个过程就会消耗时间,需要优化找寻的时间,提高效率,让他找的更快:在寄存器保存数据存放的位置,CPU从寄存器拿到地址直接在内存拿数据,效率就搞了

程序状态字寄存器

  • 非常重要的寄存器程序状态字寄存器(Program Status Word,PSW),这个寄存器包含了条码位(由比较指令设置)、CPU优先级、模式(用户态或内核态),以及各种其他控制位。用户通常读入整个PSW,但是只对其中少量的字段写入。在系统调用和I/O中,PSW非常非常非常非常非常非常重要

内核态和用户态

通常,PSW中有一个二进制位控制这两种模式。

  内核态:当cpu在内核态运行时,cpu可以执行指令集中所有的指令,很明显,所有的指令中包含了使用硬件的所有功能,(操作系统在内核态下运行,从而可以访问整个硬件)

  用户态:用户程序在用户态下运行,仅仅只能执行cpu整个指令集的一个子集,该子集中不包含操作硬件功能的部分,因此,一般情况下,在用户态中有关I/O和内存保护(操作系统占用的内存是受保护的,不能被别的程序占用),当然,在用户态下,将PSW中的模式设置成内核态也是禁止的。

  内核态与用户态切换  

  用户态下工作的软件不能操作硬件,但是我们的软件比如暴风影音,一定会有操作硬件的需求,比如从磁盘上读一个电影文件,那就必须经历从用户态切换到内核态的过程,为此,用户程序必须使用系统调用(system call),系统调用陷入内核并调用操作系统,TRAP指令把用户态切换成内核态,并启用操作系统从而获得服务。

内核态和用户态举例

word启动,跑在内存中,打开一个文档;
wrod应用软件工作在用户态,不能操作硬件,word发起系统调用,由用户态切换到内核态,由操作系统操作硬件,到硬盘拿导数据,将数据拷贝给用户态的word,这样就能看见文档了

 

操作系统必须知晓所有的寄存器。在时间多路复用的CPU中,操作系统会经常中止正在运行的某个程序并启动(或再次启动)另一个程序。每次停止一个运行着的程序时,操作系统必须保存所有的寄存器,这样在稍后该程序被再次运行时,可以把这些寄存器重新装入。

 

 处理器设计演变

1.最开始取值、解码、执行这三个过程是同时进行的,这意味着任何一个过程完成都需要等待其余两个过程执行完毕,时间浪费

2.后来被设计成了流水线式的设计

技术分享图片

 

3.超变量cpu,比流水线更加先进,有多个执行单元,可以同时负责不同的事情,比如看片的同时,听歌,打游戏;两个或更多的指令被同时取出、解码并装入一个保持缓冲区中,直至它们都执行完毕。只有有一个执行单元空闲,就检查保持缓冲区是否还有可处理的指令

 技术分享图片

这种设计存在一种缺陷,即程序的指令经常不按照顺序执行,在多数情况下,硬件负责保证这种运算结果与顺序执行的指令时的结果相同

 

进程起源:运行的一个过程就是进程,上面执行的一条流水线就是进程的起源

 

多核芯片、多线程

moore定律指出,芯片中的晶体管数量每18个月翻一倍

  • 第一步增强:在cpu芯片中加入更大的缓存,一级缓存L1,用和cpu相同的材质制成,cpu访问它没有时延
  • 第二步增强:一个cpu中的处理逻辑增多,intel公司首次提出,称为多线程(multithreading)或超线程(hyperthreading),对用户来说一个有两个线程的cpu就相当于两个cpu,我们后面要学习的进程和线程的知识就起源于这里,进程是资源单位而线程才是cpu的执行单位

多线程运行cpu保持两个不同的线程状态,可以在纳秒级的时间内来回切换,速度快到你看到的结果是并发的,伪并行的,然而多线程不提供真正的并行处理,一个cpu同一时刻只能处理一个进程(一个进程中至少一个线程)

进程代表资源单位:如:北京地铁

线程代表执行单位:如:1号线、13号线等

进程下的线程共享进程下的资源:如:所有的人;

  • 第三步增强:除了多线程,还出现了傲寒2个或者4个完整处理器的cpu芯片,如下图。要使用这类多核芯片肯定需要有多处理操作系统

技术分享图片技术分享图片

存储器

 技术分享图片

 

存储器系统采用如上图的分层结构,顶层的存储器速度较高,容量较小,与底层的存储器相比每位的成本较高

 

寄存器即L1缓存:

  • 用与cpu相同材质制造,与cpu一样快,因而cpu访问它无时延,典型容量是:在32位cpu中为32*32,在64位cpu中为64*64,在两种情况下容量均<1KB。

 

高速缓存即L2缓存:

主要由硬件控制高速缓存的存取,内存中有高速缓存行按照0~64字节为行0,64~127为行1。。。最常用的高速缓存行放置在cpu内部或者非常接近cpu的高速缓存中。当某个程序需要读一个存储字时,高速缓存硬件检查所需要的高速缓存行是否在高速缓存中。如果是,则称为高速缓存命中,缓存满足了请求,就不需要通过总线把访问请求送往主存(内存),这毕竟是慢的。高速缓存的命中通常需要两个时钟周期。高速缓存为命中,就必须访问内存,这需要付出大量的时间代价。由于高速缓存价格昂贵,所以其大小有限,有些机器具有两级甚至三级高速缓存,每一级高速缓存比前一级慢但是容易大。

  缓存在计算机科学的许多领域中起着重要的作用,并不仅仅只是RAM(随机存取存储器)的缓存行。只要存在大量的资源可以划分为小的部分,那么这些资源中的某些部分肯定会比其他部分更频发地得到使用,此时用缓存可以带来性能上的提升。一个典型的例子就是操作系统一直在使用缓存,比如,多数操作系统在内存中保留频繁使用的文件(的一部分),以避免从磁盘中重复地调用这些文件,类似的/root/a/b/c/d/e/f/a.txt的长路径名转换成该文件所在的磁盘地址的结果然后放入缓存,可以避免重复寻找地址,还有一个web页面的url地址转换为网络地址(IP)地址后,这个转换结果也可以缓存起来供将来使用。

 

内存:

再往下一层是主存,此乃存储器系统的主力,主存通常称为随机访问存储RAM,就是我们通常所说的内存,容量一直在不断攀升,所有不能再高速缓存中找到的,都会到主存中找,主存是易失性存储,断电后数据全部消失

除了主存RAM之外,许多计算机已经在使用少量的非易失性随机访问存储如ROM(Read Only Memory,ROM),在电源切断之后,非易失性存储的内容并不会丢失,ROM只读存储器在工厂中就被编程完毕,然后再也不能修改。ROM速度快且便宜,在有些计算机中,用于启动计算机的引导加载模块就存放在ROM中,另外一些I/O卡也采用ROM处理底层设备的控制。

 

EEPROM(Electrically Erasable PROM,电可擦除可编程ROM)和闪存(flash memory)也是非易失性的,但是与ROM相反,他们可以擦除和重写。不过重写时花费的时间比写入RAM要多。在便携式电子设备中中,闪存通常作为存储媒介。闪存是数码相机中的胶卷,是便携式音译播放器的磁盘,还应用于固态硬盘。闪存在速度上介于RAM和磁盘之间,但与磁盘不同的是,闪存擦除的次数过多,就被磨损了。

 

还有一类存储器就是CMOS,它是易失性的,许多计算机利用CMOS存储器来保持当前时间和日期。CMOS存储器和递增时间的电路由一小块电池驱动,所以,即使计算机没有加电,时间也仍然可以正确地更新,除此之外CMOS还可以保存配置的参数,比如,哪一个是启动磁盘等,之所以采用CMOS是因为它耗电非常少,一块工厂原装电池往往能使用若干年,但是当电池失效时,相关的配置和时间等都将丢失

 

 

 磁盘

技术分享图片

磁盘低速的原因是因为它一种机械装置,在磁盘中有一个或多个金属盘片,它们以5400,7200或10800rpm(RPM =revolutions per minute 每分钟多少转 )的速度旋转。从边缘开始有一个机械臂悬在盘面上,这类似于老式黑胶唱片机上的拾音臂。信息卸载磁盘上的一些列的同心圆上,是一连串的2进制位(称为bit位),为了统计方法,8个bit称为一个字节bytes,1024bytes=1k,1024k=1M,1024M=1G,所以我们平时所说的磁盘容量最终指的就是磁盘能写多少个2进制位。

每个磁头可以读取一段换新区域,称为磁道

把一个戈丁手臂位置上所以的磁道合起来,组成一个柱面

每个磁道划成若干扇区,扇区典型的值是512字节(最小读写单位)

 

数据都存放于一段一段的扇区,即磁道这个圆圈的一小段圆圈,从磁盘读取一段数据需要经历寻道时间和延迟时间

 

平均寻道时间

  • 机械手臂从一个柱面随机移动到相邻的柱面的时间成为寻到时间,找到了磁道就以为着招到了数据所在的那个圈圈,但是还不知道数据具体这个圆圈的具体位置
平均延迟时间
  • 机械臂到达正确的磁道之后还必须等待旋转到数据所在的扇区下,这段时间成为延迟时间
 

虚拟内存:

  • 许多计算机支持虚拟内存机制,该机制使计算机可以运行大于物理内存的程序,方法是将正在使用的程序放入内存取执行,而暂时不需要执行的程序放到磁盘的某块地方,这块地方成为虚拟内存,在linux中成为swap,这种机制的核心在于快速地映射内存地址,由cpu中的一个部件负责,成为存储器管理单元(Memory Management Unit MMU)

PS:从一个程序切换到另外一个程序,成为上下文切换(context switch),缓存和MMU的出现提升了系统的性能,尤其是上下文切换

 

 

磁带:

  • 价钱相同的情况下比硬盘拥有更高的存储容量,虽然速度低于磁盘,但是因其大容量,在地震水灾火灾时可移动性强等特性,常被用来做备份。(常见于大型数据库系统中)

 

 

IO设备:

  • I/O设备一般包括两个部分:设备控制器和设备本身。
  • 控制器:是查找主板上的一块芯片或一组芯片(硬盘,网卡,声卡等都需要插到一个口上,这个口连的便是控制器),控制器负责控制连接的设备,它从操作系统接收命令,比如读硬盘数据,然后就对硬盘设备发起读请求来读出内容。
  • 控制器的功能:通常情况下对设备的控制是非常复杂和具体的,控制器的任务就是为操作系统屏蔽这些复杂而具体的工作,提供给操作系统一个简单而清晰的接口
  • 设备本身:有相对简单的接口且标准的,这样大家都可以为其编写驱动程序了。要想调用设备,必须根据该接口编写复杂而具体的程序,于是有了控制器提供设备驱动接口给操作系统。必须把设备驱动程序安装到操作系统中。

 

 总线:

北桥即PCI桥:连接高速设备

南桥即ISA桥:连接慢速设备

技术分享图片

主板图解:

技术分享图片

 

   

计算机启动

在计算机的主板上有一个基本的输入输出程序(Basic  Input Output system)

BIOS就相当于一个小的操作系统,它有底层的I/O软件,包括读键盘,写屏幕,进行磁盘I/O,该程序存放于一非易失性闪存RAM中。

 

 

启动流程

1.计算机加电

2.BIOS开始运行,检测硬件:cpu、内存、硬盘等

3.BIOS读取CMOS存储器中的参数,选择启动设备

4.从启动设备上读取第一个扇区的内容(MBR主引导记录512字节,前446为引导信息,后64为分区信息,最后两个为标志位)

5.根据分区信息读入bootloader启动装载模块,启动操作系统

6.然后操作系统询问BIOS,以获得配置信息。对于每种设备,系统会检查其设备驱动程序是否存在,如果没有,系统则会要求用户按照设备驱动程序。一旦有了全部的设备驱动程序,操作系统就将它们调入内核。然后初始有关的表格(如进程表),穿件需要的进程,并在每个终端上启动登录程序或GUI

 

 应用软件启动

 鼠标点击软件:向操作系统发送请求,打开文件;操作系统实时监控操作事件

操作系统找到文件,读文件加载到内存,程序运行

 

计算机硬件基础

标签:sys   时钟周期   unit   基本   显示   经历   input   有一个   打印机   

原文地址:https://www.cnblogs.com/Mr-chenshuai/p/8647530.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!