计算机硬件结构概述

学习编程语言,首先需要需要了解计算机硬件组成结构,因为编程语言编写的程序,最终需要在计算机中运行。计算机与程序间属共生关系,二者相互依存,互利共赢,没有程序,计算机如同没有生命一堆废铜烂铁,没有计算机,程序像是无用武之地的英雄,失去存在的意义。所以,了解计算机硬件组成结构是学习编程语言的基础。

从数据的输入到处理完成后输出来看,计算机主要由I/O设备、总线、主存与中央处理器组成,如下图所示:

1.I/O设备

I/O设备(Input/Output Device)是计算机用于输入和输出的设备,主要分为字符设备、块设备和网络通信设备。

(1)字符设备(Character Device),又称为人机交互设备。用户通过这些设备实现与计算机系统的通信。它们大多以字符为单位传输数据,通信速度较慢。常见的有键盘、鼠标、显卡、显示器、打印机和扫描仪等,还有早期的卡片和纸带输入输出机。

(2)块设备(Block Device),又称为外部存储器。用户通过这些设备实现程序和数据的长期保存。与字符设备相比,它们以块为单位进行传输,传输速度较快。常见的有磁盘、U盘、磁带和光盘等。

(3)网络通信设备。这类设备主要有网卡、调制解调器等,主要用于与远程设备间的通信。这类设备的传输速度比字符设备快,比块设备慢。

I/O设备是计算机与外界通信的通道,通过控制器或适配器与I/O总线连接。控制器与适配器的主要区别在于封装方式,控制器是I/O设备或计算机主板上的芯片组,用于翻译CPU指令为设备可识别的控制信号。而适配器是一个独立的外部设备,用于I/O设备与计算机间数据协议的转换。二者在功能上是相同的,通过I/O总线,实现I/O设备与计算机间的为通信。 通俗来讲,I/O设备与人体的某些器官很类似。人每天工作生活,其实很像计算机的工作过程,从外界获取信息、加工,然后作出反应。计算的工作过程也是如此,通过输入设备获取信息,计算处理后,将结果输出。所以,计算的鼠标、键盘、扫描仪,类似与人体的眼、鼻、耳,来获取信息,打印机类似于人体的手脚,将信息加工后塑造出来。比如画家看到一幅美丽的山水景色,用双手创作出惊艳的图画。

2.总线

总线(Bus),又称为系统总线(System Bus),是计算机各种功能部件之间传送信息的公共通信干线,是由导线组成的传输线束。按照计算机所传输的信息种类,总线可以划分为数据总线(Data Bus)、地址总线(Address Bus)和控制总线(Control Bus),分别用来传输数据、数据地址和控制信号。

总线是一种内部结构,它是CPU、内存、I/O设备传递信息的公用通道,主机的各个部件通过总线相连接,外部设备通过相应的接口电路再与总线相连接,从而形成了计算机硬件系统。通俗来讲,如果将计算机主板比作一座城市,那么总线就是这座城市的交通线路,交通线路根据运行的不同类型的交通工具,可分为汽运公路、航运水路、铁路干线等。每条交通线路同时能够运行的交通工具的数量是有限的,比如拥有4个车道的公路,则同时并行运行的车辆最多为4辆,这种有限的运输能力类似于总线的位宽,总线的带宽(总线数据传输速率)等于“总线的工作频率*总线的位宽/8”,单位字节/秒(B/s)。比如数据总线的工作频率是1MHz,位宽64Bit,那么数据总线的带宽是8MB/s,即数据总线每秒最大可传输8MB的数据。

3.主存

主存又名主存储器(Main Memory),是一个临时存储设备,用于存储程序和所需的数据,由中央处理器(CPU)随机存取。物理构成上,主存由一组动态随机存储器(DRAM)芯片组成,逻辑上,主存是一个线性字节数组,每个字节有一个独立的地址。

现代计算机,为兼顾性能与成本,往往采用多级存储体系。即由CPU寄存器、高速缓冲存储器(Cache,存储容量小、存取速度快、成本高)、主存储器(容量、速度与成本折中)和磁盘(低价、容量大但速度较慢),外加远程存储系统(速度慢但容量可以无限),共同构成计算机的存储体系。如下图所示。

CPU寄存器是CPU的组成部分,存储一个字长的数据,字长表示CPU在一个时钟周期能够处理二进制数的位数。字长是由CPU中寄存器的位数决定,CPU可以在一个时钟周期内访问。高速缓存存储器一般会采用多级结构,基于SRAM构建,随着级数的递增,速度递减,容量递增,可以在多个时钟周期内访问。主存基于DRAM构建,容量大于缓存,低于磁盘,速度低于缓存,高于磁盘,可以在几十到几百个时钟周期内访问。接着是容量大但速度慢的磁盘,访问一次需要几十万到几百万个时钟周期。对于远程的存储系统,需要借助网络传输,速度会更慢。

4.中央处理器

中央处理器(CPU,Central Processing Unit),是一块超大规模集成电路,是计算机的运算和控制核心,其作用类似于人脑,负责对数据的加工处理和各种控制信号的下发。功能主要是解释执行计算机指令来完成计算。 中央处理器主要包括算术逻辑运算单元(ALU,Arithmetic Logic Unit)、程序计数器(PC,Program Counter)、寄存器组、高速缓冲存储器(Cache)以及用于传输数据、控制及状态的总线(Bus)。

算术逻辑运算单元,顾名思义,执行各种算术和逻辑运算操作的部件,基本操作包括加、减、乘、除四则运算,与、或、非、异或、移位位运算,以及关系运算和逻辑运算等操作。程序计数器是CPU控制部件中的寄存器,用于存放下一条指令的地址。寄存器组包括通用寄存器、专用寄存器和控制寄存器。寄存器拥有非常高的读写速度,所以在寄存器之间的数据传送非常快。高速缓冲存储器是由SRAM组成的高速低容量存储器,用于缓存常用的指令与数据,最重要的技术指标是它的命中率。总线用于CPU与其它设备间传输信息。

计算机从开机开始,不停地从程序计数器中获取指令、分析指令、执行指令,然后更新程序计数器,指向下一条指令。CPU常见的操作包括: (1)加载:如从主存复制一个字节或一个字到寄存器,用于后续运算; (2)存储:如从寄存器赋值一个字节或一个字到主存; (3)操作:把两个寄存器的内容复制到ALU进行算术运算,并将结果存放到另一个寄存器中; (4)从指令本身中抽取一个字,并将这个字复制到程序计数器,完成更新。


参考文献

[1]深入理解计算机系统中文版

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏IMWeb前端团队

聊聊http/2

本文作者:IMWeb 九月 原文出处:IMWeb社区 未经同意,禁止转载 随着web的发展,http/1.x 已经很难满足现在的需求,Google 因...

23270
来自专栏有趣的django

Django REST framework+Vue 打造生鲜超市(九) 十、购物车、订单管理和支付功能

十、购物车、订单管理和支付功能 10.1.添加商品到购物车 (1)trade/serializer.py # trade/serializer.py __au...

48150
来自专栏镁客网

将缓存数据率提升50%,MIT、Intel的研究人员还让宽带利用率提高5倍 | 黑科技

16400
来自专栏玉树芝兰

如何用 Python 和 API 收集与分析网络数据?

本文以一款阿里云市场历史天气查询产品为例,为你逐步介绍如何用 Python 调用 API 收集、分析与可视化数据。希望你举一反三,轻松应对今后的 API 数据收...

31520
来自专栏Linux驱动

19.Linux-USB总线驱动分析

如下图所示,以windows为例,我们插上一个没有USB设备驱动的USB,就会提示你安装驱动程序 ? 为什么一插上就有会提示信息? 是因为windows自带了...

41080
来自专栏lgp20151222

关于一次性的数据输入,excel字符串连接保存到服务器还是CRUD?

开发中遇到个问题,线下一个紧急的活动,给一个excel的文件,要把里面的一次性的数据放进活动里面,说真的几百几千个数据啊,手写进数据库不是更麻烦了吗?

13920
来自专栏逸鹏说道

07. Web大前端时代之:HTML5+CSS3入门系列~H5 地理位置

Web大前端时代之:HTML5+CSS3入门系列:http://www.cnblogs.com/dunitian/p/5121725.html 定位类型 IP ...

46540
来自专栏花叔的专栏

实践并解读最新的小程序码生成方式

花叔一看到这个新特性时就开始着手研究这特性怎么应用,经过一轮测试,终于有点成绩,来看看花叔的研究成果,希望对大家有用。

44560
来自专栏java一日一条

在 Visual Studio 上更好开发 Python 的六大功能!

Visual Studio 2013/2015 搭配 Python Tools for Visual Studio 扩充套件让 Visual Studio 能提...

10710
来自专栏王清培的专栏

.NET应用架构设计—表模块模式与事务脚本模式的代码编写

要想正确的设计系统架构就必须能正确的搞懂每个架构模式的用意,而不是胡子眉毛一把抓。现在有一个现象是什么呢,项目的结构从表面上看是很不错,层分的很合理,其实对业务...

9300

扫码关注云+社区

领取腾讯云代金券