对于半道入行编程的程序员,大部分对计算机的工做原理的了解都是有限的,这些了解大部分都是在平常工做中去了解的,其实对应程序员来讲不用深刻了解理解计算机基本原理就足以应付当前的工做须要。然而多了解总比不了解要强,这也是笔者要整理此片文章的由衷。
程序员
步入21世纪的你,若是还不知道“计算机”,那你真的是OUT了。计算机是20世纪人类最伟大的可选成就之一,话说计算机从整体上来讲可分为电子模拟计算机和电子数字计算机两大类。电子模拟计算机主要是经过电压电流模拟实现连续的数值运算,常被一些实验室的科研人员所熟知;而被大众所熟知的则是电子数字计算机,也就是咱们称之为的“电脑”,其主要是经过模拟数字实现非联系的位运算。
数据库
数字计算机根据计算机效率、速度、适用性等特色,一般又分为专用计算机和通用计算机两类。专用计算机,顾名思义,其是专门为完成某一类工做而设计的,因此其完成这项工做的效率极高,可是其适用性就大打折扣了。通用计算机并不是是为完成莫一项任务而设计,可以兼容性完成多项任务,按照简易程度、性能等特色又能够分为巨型机、大型机、中型机、微型机和单片机六类,其体积、功能、数据存储量、指令系统等从前到后依次高升,可是其简易性则依次下降。巨型机一般也成为“超级计算机”,其结构复杂,运算速度极快,数据存储量大,可是足够庞大;大中小型计算机主要是根据其体积来衡量划定的;微型机简称为“微机”,就是常见的我的计算机(PC),其是由大规模的集成电路组成的体积较小的计算机;单片机则是最为简单的计算机,其主要是集成电路组成,以致于其体积小,结构简单。这些划分只是根据其特色来区分的,随着大规模集成电路的迅速发展,今天的小型机多是明天的微型机,而今天的微型机多是明天的单片机。编程
计算机主要由硬件系统和软件系统两部分组成(相信是人都应该看的到,硬件是有型的实体,而软件则是有型的虚构体),其中硬件构成了计算机的物质基础,软件则是计算机系统的应用基础。通俗的说,软件就是计算机上能看获得(固然也有看不到的)可是摸不到的可以协助完成工做的应用程序,例如Windows系统、硬件驱动程序等其余应用程序;而硬件则是计算机的基本组件,是看获得摸获得的物体,例如主板、CPU等。
数组
从理论上讲,计算机的硬件系统主要由运算器、存储器、控制器、输入设备和输出设备五大部分组成(从名字上便可看出各个部件的做用),这种划分方式称为“冯诺依曼体系结构”。缓存
运算器网络
运算器(Datapath),顾名思义就是进行运算的执行部件。其主要功能是对数据进行运算的加工处理操做,包括加、减、乘、除等数学算术运算和与、或、非等逻辑运算。运算器主要由运算逻辑单元(ALU)和寄存器两部分元件组成,其中寄存器用于提供参与运算的数据或临时保存运算结果。一般状况下运算器集成于CPU中央处理器中。数据结构
实质上运算器采用的二进制数制系统,其参与运算的数是有二进制表示(由于二进制数的运算规律很是简单,在电子线路中能够灵活的表示电子元件的状态,其比较容易实现并且设备最省)。在运算过程当中,位数越多则运算精度越高,则其所需的电子元件就越多,如今常见的计算机运算器支持的位数有8位、16位、32位或64位。架构
存储器并发
存储器(Memory),顾名思义就是用于存储数据的部件。其主要功能用于存放程序与数据(程序是计算机操做的依据,数据是计算机操做的对象),程序和数据在存储器中以二进制的方式表示,每8位二进制数码划分为一个存储单元,必须经过地址来访问该单元,地址其实就是这个存储单元的编号。
dom
存储器主要由存储体、地址寄存器与译码线路、读写电路与数据寄存器、控制线路等元件构成;一般状况下存储器可分为内部存储器和外部存储器两大类,内部存储器就是咱们常说的内存(也称为主存),外部存储器也就是常说的硬盘、U盘等,也成为外存或辅存,通常状况下外部存储器也做为输入/输出设备。
控制器
控制器(Control),是整个计算机的控制中心,主要用来协调计算机各个组件的工做,完成程序信息的处理和数据的输入/输出。它通常由指令寄存器、状态寄存器、指令编码器、时序电路和控制电路组成。简而言之,控制器就是协调指挥计算机各个部件工做的组件。一般状况下控制器集成于CPU中央处理器中。
程序是由指令序列组成的,其实执行程序就是逐条执行指令的过程,实质运算器所完成的每一步运算操做就是一条指令。指令是由操做码和地址码组成,其实都是二进制数码,其中操做码即表示指令所要进行的操做,例如加、减、存、取等操做,地址码表示参与运算的数据的地址,即在存储单元中的位置。控制器就是解析这条指令,而后从存储单元中取出数据,并进行相应的操做运算。
计算机在进行计算机时,指令必须按顺序一条一条的执行。控制器的基本任务就是按照指令序列的顺序,先从存储器取出一条指令放到控制器中,并对该指令的操做码由译码器进行解析,而后根据译码对应的操做进行相应的动做行为,这就是执行指令的过程;接着取出第二条指令,按照上述顺序进行执行。过程当中控制器会经过指令计数器来控制取指令的当前位置,每取出一条指令其计算器就会加1,为取下一条指令作好准备。
输入/输出设备
输入设备(Input System),输入设备是计算机的重要外部设备,其主要做用是将程序、原始数据、文字、字符、控制命令或现场采集的数据等信息输入到计算机,并转换为二进制格式保存在内存中。常见的输入设备有键盘、鼠标器、光电输入机、磁带机、磁盘机、光盘机等。
输出设备(Output System),输出设备是计算机的重要外部设备,其主要做用是将计算机的运算中间结果或最终结果、机内的各类数据符号及文字或各类控制信号等信息展现给用户。常见的输出设备有显示器、打印机、绘图仪、音箱、投影仪等。
总线
除过上面介绍的五部分外,计算机系统中还必须包括另外一个部件——总线。总线是一组为系统部件之间数据传送的公用信号线。具备聚集与分配数据信号、选择发送信号的部件与接收信号的部件、总线控制权的创建与转移等功能。典型的微机计算机系统的结构一般多采用单总线结构,通常按信号类型将总线分为三组,其中AB(Address Bus)为地址总线;DB(Data Bus)为数据总线;CB(Control Bus)控制总线。计算机经过总线将五大部件链接起来,总线是它们相互通讯的公共通路,主要任务是在各部件之间传送地址信息、数据信息和控制信息。
从实物上看,通常PC包括键盘、鼠标、显示器、主机等大型部件组成,而主机则是计算机的主体部分,包括CPU、主板、内存条、显卡、声卡、网卡、硬盘以及其余媒体驱动器组成(这些都是一般听到的可见的实体物件)。
主板
主板,又称主机板(Main Board)、系统板(System Board)或母板(Mother Board),是计算机最重要的部件之一。主板上包含了计算机的主要电路系统,全部的计算机其余组件必须直接或间接依赖主板,计算机的性能主要取决与主板。主板其实能够看做一个设有多个接口的电路板,其中主要包括芯片、插槽、外设接口三大类组件。
芯片类主要有BIOS(Basic Input/Output System)芯片,南北桥芯片和RAID控制芯片等。BIOS芯片,即基本输入/输出系统芯片,它是一个存储器,内部保存着与主板搭配的基本输入输出系统程序,这个程序由芯片制造商制做并固化在芯片上的;也能够说BIOS实际上是一个底层软件,用于控制计算机的底层的输入输出操做,这个软件能够识别各类硬件,还能够设置引导系统的设备,系统时间以及调整CPU外频等。由于BIOS是存储在BIOS芯片中的,而不是相似其余的外部存储器中,因此一般称为“固件(Firmware)”。随之技术的不断发展,如今的BIOS也支持从新写入,可使计算机得到更好的性能和支持。 南/北桥芯片是两个通讯桥梁的两个芯片,合成芯片组。南桥芯片主要负责硬盘等存储设备和PCI之间的数据流通;北桥芯片主要负责处理CPU、内存和显卡三者间的数据流通,通常发热量较大,位于散热装置附近。RAID控制芯片,主要用于支撑硬盘。
插槽类主要有CPU插槽、内存插槽、PCI插槽、PCI Express插槽等。CPU插槽用于安装CPU部件,CPU部件必须与主板相互兼容才能够安装。内存插槽主要用于安装内存条的卡槽,内存种类、数量和容量都有内存插槽决定。PCI插槽主要用于安装调制解调器、声卡、网卡等设备。PCI Express插槽主要用于安装显卡部件。
外设接口类主要有硬盘接口、COM接口(串口)、PS/2接口、USB接口、LPT接口(并口)、MIDI接口等。硬盘接口可分为IDE接口和SATA接口,如今大多都是SATA硬件驱动器接口,这个接口的传输数据效率更高。COM接口用于链接串行鼠标和外置调制解调器(Modem)等设备,基本被淘汰。PS/2接口用于链接键盘或鼠标,台式机存在。USB接口使用较为普遍,大多数外置设备都支持这个接口,该接口支持即插即用。LPT接口用于链接打印机或扫描仪等。MIDI接口主要用于MIDI设备,用于与其它控制设备相互通讯。
综上所述,主板在计算机中起到了举足轻重的做用,经过各类控制信号来管理各类电子容器,从而达到不一样的效果,几乎全部的外设接口都直接或间接的与主板相关联,大部分的硬件设备必须与主板相兼容才能正常运行,也能够说主板能够决定其它的部件。主板能够看着各个部件协调工做的场所,提供各个不只相互协调工做的数据流通,主板内部自身供电装置维护其内部BIOS的运行。
CPU
CPU(Central Processing Unit),一个耳熟能详的组件,被亲切的称之为“中央处理器”,它是整个计算机的运算核心和控制核心。其主要功能是解释计算机指令以及处理程序中的数据。CPU由运算器(包含寄存器)和控制以及总线组成,CPU的工做过程分为提取(Fetch)、解码(Decode)、执行(Execute)和写回(Writeback)四个步骤。
程序是有指令(指令就是二进制数码组合)构成的序列,执行程序就是按指令序列逐条执行指令。当打开某个程序时,会由运行平台将该程序解析为指令序列并保存在存储器中,而后CPU取出指令序列逐条执行。CPU首先从存储器或高速缓冲存储器中检索指令;而后根据CPU固有的指令集架构(ISA)的定义将提取的指令数值解释为CPU可以识别的指令码(运算码和运算目标等);紧接着执行CPU指令码,根据指令码对应的控制信号链接到各类可以进行所需运算的其它部件并控制其做出相应动做,从而达到运算效果;最终将运算结果写回到CPU内部的寄存器(暂存器),CPU运算大体就是这个过程。
CPU是计算机最重要的组件之一,提供指令控制、操做控制、时间控制、数据加工等功能,其中指令控制主要是指控制指令执行的顺序;操做控制主要是指根据对应的指令产生相应的操做控制信号发送给相应的部件并控制这些部件按指令的要求进行动做;时间控制主要是指对各类操做定制时间的的设定;数据加工是最重要的功能,主要是进行数据的运算处理。
CPU的性能决定了计算机的性能,然而外部又受主板的牵制。CPU的字长、工做频率、Cache容量、指令系统和逻辑结构决定了一个CPU的性能,其中字长表示CPU一次最多可同时传送和处理的二进制数码位数,如今常见的有32位和64位;工做频率(也称主频)就是CPU的处理数据的速度,单位为兆赫兹(MHz)或千兆赫兹(GHz),一般状况下频率越高运算数据的速度越快,固然这只是一个大体概念,一般状况下CPU的实际运算速率还受CPU的流水线、总线等各方面性能的影响;缓存(Cache)容量也是CPU处理数据速率的重要指标,缓存主要用于临时存储指令或参与CPU运算的数据,减小数据传输的时间,如今的CPU大多设有2级缓存;CPU指令系统是CPU内部基础的与硬件电路相配合的指令系统,也成为指令集,是CPU处理数据效率的重要衡量标准,指令集用于控制各个部件的协调工做。
综上所述,CPU是计算机的“大脑”,是控制其它组件协调工做的的部件,是计算机数据运算的场所。CPU内部包含了其独立的指令集,全部的程序都将被解析为该CPU对应的指令序列才能正常执行,CPU必须具有数据通讯,资源共享,分布式处理和提供系统可靠性等特色。理论上将CPU频率越高、指令系统越高级、缓存越大,其处理数据的数度就越快,然而其必需要与对应的主板相兼容才可体系性能,不然将没法运行,即时能够运行则也是大材小用。
内存条
内存条也是计算机的重要组件之一,是计算机中最为主要的寄存器。内存条在计算机中主要做用是缓冲数据和数据交换,主要负责硬盘等存储器与CPU通讯的临时数据的传输或存储。程序在运行时会将与程序相关的指令信息加载到内存中,CPU直接与内存进行通讯,来提取指令信息并执行,CPU在内存中经过直接寻址的方式进行提取指令信息。举个最简单的例子就是咱们写入一个记事本文件时,若是没有保存则其记事本中的字符信息都保存在内存中,当保存后才会写到硬盘上。
常说的内存大多数指的就是内存条,但也不彻底是。内存是一种存储单元,包括随机存储器(RAM)、只读存储器(ROM)和高速缓存(Cache)三部分。ROM(Read Only Memory)是只读存储器,能够说任意一个硬件都对应一个ROM存储器,用于存储硬件自己的信息或其相应的应用程序,其特色是断电后信息不会丢失,最多见的就是BIOS芯片,不过如今的BIOS芯片均可以复写,可是大多数仍是称为BIOS ROM;RAM(Random Access Memory)是随机存储器,它既能够写入数据也能够读取数据,能够不断的复写数据,其特色是断电后存储的数据会丢失。其内存条就是将RAM集成在一个插卡上以减小RAM的空间,因此常说的内存条就是指内存。
随着科技的发展,如今的内存条的存储空间也愈来愈大,临时存储的数据也愈来愈多,因此拥有大内存的计算机远比小内存的计算机运行要流畅,然而并非越大的内存空间就越好,其首先收到主板的牵制,其次还收到CPU总线的限制,若是CPU总线不及则又是大材小用,若是内存空间不足则CPU没法最高效运做。
综上所述,内存条也是计算机的必要组件之一,大内存的内存条每每会是计算机的程序运行更流畅,可是前提是必须与主板接口相兼容。
显卡
显卡全称显示接口卡,也称显示适配器、显示器配置卡,是PC中一个重要的组件,主要用于将计算机系统输出的信息进行转换并向显示器提供扫描信号。显卡基本上包括GPU(Graphic Processing Unit,图形处理器)、显存两个重要部件。
GPU,即图形处理器,相对应CPU的一个概念,在早期图形处理部分主要由CPU来完成,而如今图形处理变得愈来愈重要,因此必须一个核心的图形处理器来完成这个工做,从而减小对CPU的依赖,因此就出现了GPU,主要用于将输出信号进行几何转换和光照处理以及像素和色彩渲染等处理。显存是显示内存的简称,其和内存的做用基本一致,其主要用于暂时存储显示芯片要处理的数据和处理完毕的数据,一般状况下显存越大其图形显示的性能就越强。
如今的显卡基本分为独立显卡、集成显卡两大类,其中集显就是将显示芯片、显存等集成在主板上;独显则是将显示芯片、显存等坐在一个插卡上,经过主板接口插槽插入运行,固然如今也有双显卡兼容工做的模式。须要注意的是显卡也受主板的约束。
声卡
声卡,亦称为音频卡,是多媒体技术中的基本组成部分,实现声波/数组信号相互转换的一种组件。声卡主要用于将原始声音数据转换为声音信号并输出到不一样的声响设备。声卡主要包括声音控制芯片、数字信号处理器等部件组成。
声音控制芯片主要将从输入设备中获取的声音模拟信号经过模数转换器,将声波信号转换为一串数字信号并存储在储存器中;数字信号处理器是一种声音数字处理器,将信号交由该处理器处理减轻了CPU的工做负担。
如今声卡基本分为板卡式、集成式和外置式三种接口类型。
网卡
网卡,全称网络接口板,又称通讯适配器或完了接口卡(NIC,Network Interface Card)。网卡是计算机进行网络通讯必备的硬件设备,它属于网络协议(OSI模型)中的链路层组件,主要用于网络中电信号的匹配、传输、编码和解码等工做。
网卡主要有处理器和存储器两大部件组成,其中存储器,也就是网卡的ROM中保存这该网卡的基本信息,其中有标识该网卡惟一的MAC地址,是一个独一无二的48位串行号(任何两块网卡的MAC地址都不会重复);处理器则用于对电信号进行传输、解码以及编码工做(在网络通讯中实际传输的是电信号,由网卡负责将电信号进行编码和解码)。
网卡在局域网之间的通讯是经过电缆或双绞线以串行传输方式进行的,而在计算机之间的通讯则是经过计算机主板上的I/O总线以窗口并行传输方式进行的。因此网卡的一个重要功能就是进行串行/并行转换。网卡通常具有数据的封装和解封、链路管理以及编码(曼彻斯特编码)和移码三大功能。
如今的网卡基本分为有线网卡和无线网卡两种,其中有线网卡则为标准通用化网卡设备,无线网卡主要是一个电信号接受和发送的设备,其标准主要使用数据传输速率来衡量。
固然还有其余的设备,这里就不一一介绍了。
说点题外话,我的认为计算机的主板、CPU和内存比较重要,毕竟内存和CPU寄存于主板之上,盲目的追求高内存和CPU并不必定可以使其发挥到更好的工做效果,但也不排除高内存和CPU的确可以是计算机高效工做。追求高配是如今的潮流,追求以前必定得让主板所能承受才可。
对于计算机的软件系统,这里不想多说,作IT的你不知道软件,那也甭作了,仍是回家种地吧。话说计算机的软件系统能够分为系统程序和应用程序两大类。
系统程序是为了简化程序设计和使用方法而出现的一类高效的软件程序,包括服务性程序、语言处理程序、操做系统、数据库管理系统。应用程序是用户利用计算机来解决问题而编制的程序。
软件(Software)是计算机系统中使用的各类程序,而软件系统是指挥整个计算机硬件系统工做的程序集合。在计算机中的程序划分为微程序设计级、机器语言级、操做系统级、汇编语言级和高级语言级五大级别。微程序设计级别是一种纯硬件级别的程序设计,通常就是定义其硬件的指令系统,由机器硬件直接执行。机器语言级别也是硬件级别的程序设计,通常是借用微程序的指令系统实现程序设计,由微程序去执行的。操做系统级别属于一种软硬件混合级别的程序设计,通常涉及软硬件指令的引用,主要在操做系统的控制下去调用软硬件资源协调工做,实际底层是通常机器去执行的。汇编语言级别的程序通常使用汇编语言编写,由汇编程序的支持和执行。高级语言级别的程序采用的是高级程序设计语言编写,通常为一种纯粹的软件程序,由对应程序设计语言的编译和执行程序支持和执行,这一级别的程序也称为用户程序。如今咱们所作的程序大多都是创建在操做系统级别之上的汇编语言程序和高级语言程序。
然而随之技术的发展,如今的软硬件的界限也模糊不清了,随之只读存储器的出现,现下大多数的硬件设备都是集成式(也称嵌入式)的,其内部都包含一个只读存储区,存储着其对应的固有的软件程序,这样的部件我也称之为固件。
谈到软件,就不得不说程序设计语言,何为程序设计语言?程序设计语言就是使用约定的符号编写计算机程序的语言,简单的说是用来制做计算机软件程序的语言,例如汇编、C、Java、PHP等等都是程序设计语言。现下的程序设计语言可分为机器语言、汇编语言和高级语言三大类。机器语言是一种用二进制形式表示而且可以直接被计算机硬件识别和执行的语言,机器语言也机器自己结构有关,不一样的机器其机器语言也不一样,使用机器语言编写的程序成为i额机器语言程序。汇编语言是一种将机器语言符号化的语言,它使用字母、符号和数字来代替数字编码的机器指令,汇编语言的语句与机器指令一一对应,因此不一样的机器也具备不一样的汇编语言,用汇编语言编写的程序称为汇编语言程序;例如Nasm、Masm、Tasm等都属于汇编语言程序。高级语言是一种与计算机结构不相关的,表达方式接近于被描述问题的程序设计语言,高级语言程序在计算机中须要利用其对应的编译程序或解释执行程序将其翻译为对应的机器语言程序才能够执行;例如Basic、Fortran、Pascal、C语言、Delphi、C++、 Java等都属于高级语言程序。然而高级语言又能够划分为面向过程式语言、面向对象式语言等。
存储器是计算机的基本部件之一,其按照不一样的衡量标准能够划分为不一样的类别。最多见就是根据其本质读写能力划分为只读存储器(ROM,Read-Only Memory)和随机读写存储器(RAM,Random Access Memory)。只读存储器中存储的内容是不可变的,只能读取数据而不能写入数据,因此经常使用于保存一些硬件设备的基本信息,其存储的数据是永久的,断电后能够保留;随机读写存储器中存储的内容是可变的,既能够写入数据也能够读取数据,其存储的数据并非永久的,断电后则就会丢失。随之ROM的发展可分为掩模式ROM(不可修改)、可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)和闪存(Flash Memory),如今所用ROM存储器基本上都支持从新写入。RAM能够非为SRAM(静态RAM)和DRAM(动态RAM)两种类型。
存储器根据在计算机系统中的做用和角色则分为寄存器(控制存储器)、高速缓冲存储器、内存(主存储器)、磁盘存储器(辅助存储器)等。现今的通用计算机都具有寄存器、缓冲存储器、内存和磁盘这四个存储器设备,并且其访问速度依次递减,可是存储容量则依次递增。下面逐一介绍。
寄存器
寄存器,也称为控制存储器,用于临时存储参与运算数据,常集成于CPU(中央处理器)中,因此其存取数据速度快,其速度是全部存储器中速度最快的。为何要集成与CPU中?由于CPU包含运算器和控制器,其是处理数据的中心,若是有一个在读取数据是从其余管理的元件中传入,一定存在传输延迟问题,同时还增长了对其余元件的依赖程度和负载能力,因此将其寄存于CPU中做为临时数据的存取空间。
高速缓冲存储器
高速缓冲存储器,从名字上能够得知其主要是起到缓冲数据的做用。因为寄存器容量有限,一个CPU运算的周期可能须要从较大的内存存储器中获取更多的数据信息,增大了数据传输的时间,这便限制了高速计算,为了解决这个问题,因此使用一个高速缓冲存储器来加速CPU和内存之间的数据传输。高速缓存存储器一般也集成于CPU中,用于临时存储即将参与运算的数据,其容量较小可是存取数据速度也很快。
内存
内存,也称为主存储器,用于存储运行的程序和数据,其存取数据的速度较快,存储数据的容量较大。内存是运行程序和资源数据与CPU进行交互的主要中间介质,也就是说程序启动时先将程序数据送往内存中,而后由CPU去一条一条数据的执行。因为寄存器和高速缓冲存储器都集成于CPU中,而内存是独立于CPU的,因此内存的性能会直接影响计算机的性能。这也是你们都最求高内存的缘由。
内存的衡量标准主要有存储容量、存取时间、存储周期和存储器带宽四个指标。其中存储容量是一个存储器中能够容纳的存储单元总数,一般以字数或字节数做为单位;存取时间则是启动到完成一次存储器操做所经历的时间,一般以纳秒(ns)为单位;存储周期则是连续启动连词操做所需间隔的最小时间,一般以纳秒(ns)为单位;存储器带宽表示单位时间内存储器所存储的信息量大小,一般以位/秒或字节/秒为单位。后三者是其存取速度的主要衡量标准。
磁盘存储器
磁盘存储器,属于辅助存储器,简称辅存,辅存包括磁盘、U盘、光盘等外部存储器,而磁盘存储器是最为常见的辅存设备。辅存的最大特色是存储容量大。
随着科技的发展,如今还存在另外一种存储器——虚拟存储器。虚拟存储器并发实际存在的物理存储器,而是一种容量足够大的逻辑模型,指借助磁盘等辅助存储器来扩大主存容量的一种方式。其实能够将其理解为一种主存到外存层次上的缓冲存储器。
众所周知,计算机使用的是二进制数制系统。存储元是计算机中最小存储数据的介质,一个存储元存储一个二进制数码(0或1);多个存储单元组成一个存储单元;多个存储单元组成一个存储器。
说到存储器,不得不说的是存储器容量的问题。常见的“KB”或“K”、“MB”或“M”、“GB”或“G”、“TB”或“T”,这些都是存储器容量的衡量单位。存储器的容量实际上是指存储器全部存储单元的总数,规定8位(8个二进制码)为1字节,即8bit=1byte=1B(至于为何这样规定?笔者也没搞清楚)。
到底什么是位?位(bit)是计算机中最小的数据传输单位,其实就是一个二进制数码(0或1),一个二进制序列中的每个0或1都成为一个位,按照习惯,一般称右边为低位,左边为高位。
那什么又是字节?字节(byte)是计算机中最小的数据存储单位,规定一个字节由8位组成,即一个字节就是8个0或1组成的二进制序列。随着计算机的发展,其存储容量愈来愈大,使用字节进行衡量就不太合理了。因此出现了千字节(KB)、兆字节(MB)、吉字节(GB)、太字节(TB)等等更大了衡量单位。
从十进制的角度去考虑,上述的单位都相差千倍,在二进制中千倍可使用210(1024)表示(由于其最接近1000)。因此标准状况下其计算机存储单位换算过程以下:
1B=1byte=8bit=8b
1KB=1024B=1024byte
1MB=1024KB
1GB=1024MB
1TB=1024GB
……
上述只是标准状况下的换算方式,而在现实中,大多数硬盘中仍是使用10的3次方即1000做为转换标准进行硬盘设计制造。
上面也提到,“位”是计算机中数据传输的最小单位。然而计算机在实际工做中,若是使用位进行数据传输则效率极其低,因此实际中CPU向存储器送入或从存储器取出信息时,一般使用用“字节”或“字”等较大的信息单元来工做。
字节(byte或B)也就是上面讲到的,通常由8位二进制数码组成,也就是说使用字节进行传输数据则一次能够传输8位信息,然而这样仍是不能知足当前的运算要求,所以就出现了字。
字(word或W)是计算机中最经常使用的数据传输单位,字由若干个字节组成,是计算机一次处理或运算的一串二进制数码,相同的字在不一样的位置其含义也不一样,例如送外控制器的字是指令,而送往运算器的字则是运算数。字的长度用位数来表示,一般把组成一个字的二进制位数叫作字长,咱们常说的8位、16位、32位和64位CPU则就是指的CPU字长,也就是CPU一次可以处理(传输)的二进制数码位数。字长能够用于衡量一个CPU的能力,字长越大其性能则越高,字长可分为固定和可变两种类型。常说的32位、64位操做系统则是对应于计算机处理器而言的,它们都是低向兼容,可是若是不匹配则其运行性能会大打折扣,好比说64位的CPU能够兼容32位的系统,可是其效果不能达到最佳,而32位则不能兼容64位的系统。
上面一再提到指令,到底何为指令?指令就是一种指挥相应动做的命令,在计算机中指令是一种控制信号,用来控制计算机各个元件的相应操做。计算机的电子元件的工做都受到指令的支配。其是计算机中最小的执行单元,全部的程序都是由一系列相应的指令组成的,计算机的指令可划分为微指令、机器指令和宏指令三类,微指令是微程序的命令,属于硬件级别;宏指令则是有若干条机器指令组成的软件指令,属于软件级别;机器指令其介于微指令和宏指令之间,每一条指令能够完成一个独立的算术运算或逻辑运算,咱们常说的指令就是指机器指令。
计算机中全部机器指令的集合组成一个指令系统,其是计算机性能的重要衡量标准,不只直接影响机器的硬件结构,也直接影响到其软件系统,影响其机器自己的适用范围。计算机的指令系统通常包括数据传送指令、算术运算指令、逻辑运算指令、程序控制指令、输入输出指令、字符串处理指令、特权指令以及状态寄存器置位、复位指令、测试指令、暂停指令,空操做指令等其余指令。从指令系统来说能够将计算机非为复杂指令系统计算机(CISC)和精简指令系统计算机(RISC)两种,复杂指令系统的指令多达几百条,大多数状况下只有20%的指令会常用,而精简指令系统就是这20%的指令组成的。
指令,也称机器指令或指令字,是计算机中一种控制元件执行动做的命令,其实质是一种二进制序列代码,由操做码字段和地址码字段组成。其中操做码字段表示指令的操做特性和功能,地址码字段指定参与操做的操做数据的地址。
指令系统中的每一条指令都有一个操做码,表示该指令应该进行什么性质的操做,也就是说每一种指令对应一种固定编码的操做码。操做码的字段位数通常受到计算机指令系统的约束,通常8条指令的指令系统,3位操做码则足够;32条指令的指令系统,则须要5位操做码。
每一条指令不只包括操做码,并且还操做地址码,地址码用于指定操做数的存储位置。根据操做数的个数能够将指令分为若干个操做数指令或若干个地址指令;通常的指令都存储被操做数、操做数和操做结果三种数据,因此称为三地址指令,固然也存在二地址指令、一地址指令和零地址指令。
在计算机的指令系统中,通常指令的操做码字段和地址码字段的位数(长度)是固定的,而指令的位数(指令字长度)则分为固定和可变两种。固定字长指令系统中,各类指令字长度都是相等的;可变字长指令系统中,各类指令字长度随指功能而异。指令字长和机器字长大多会混为一谈,指令字长度表示一条指令中所包含的二进制数码位数;机器字长表示计算机一次直接处理二进制数码的位数,其决定了计算机的运算精度。
上面提到操做数地址,那么何为地址?来看下面的介绍。
操做数地址是指操做数存储在存储器存储单元时存储单元的编号(编码,一种二进制数码);指令在存储器中的地址则指指令存储在存储单元是该存储单元的编号。在存储器中,操做数或指令字写入或读取的方式有地址指定方式、相联存储方式和堆栈存储方式三种形式。大多数的机器采用地址指定方式来表述操做数或指令的地址,这种方式称为“寻址方式”,常说的寻址是指在内存中进行寻址。寻找方式分为指令寻址方式和数据寻址方式两种。
指令寻址方式包括顺序寻址和跳跃寻址两种形式,顺序寻址就是按程序指令顺序一条一条指令的执行,首先执行第一条,而后第二条,接着第三条……,一般状况下处理器中存储一个程序技计数器(指令指针寄存器),用来标识下一条指令的序号(模拟序号),根据这个序号能够指定执行下一条指令的位置;当程序指令转移执行时则须要使用跳跃寻址方式,此时当前指令会给出下一条指令的序号(并非由程序计算器给出,可是其指会改变),程序跳跃后,而后在按新的指令地址顺序执行。
指令中操做数的地址码通常有形式地址和寻址方式特制位组合造成,也就是说,指令中的地址码并非操做数的真实有效地址,所以,操做数的寻址过程就是将操做数的形式地址转换为操做数的有效地址的过程。操做数的有效地址是将操做数的形式地址使用指定的寻址方式进行转换得来的,其中操做数的形式地址是一种二进制数码,寻址方式包括隐含寻址、当即寻址、直接寻址、间接寻址、寄存器寻址、相对寻址、基址寻址、变址寻址、块寻址和段寻址等多种方式。隐含寻址就是指令中不明显的给出而是隐含这操做数的地址;当即寻址表示指令中的地址字段指定的是操做数自己,而不是其地址;直接寻址就是在指令的地址字段中直接之处操做数在内存中的地址;间接寻址就是指令中的地址字段给出的是形式地址,而是操做数地址的指示器,而后由指示器指定其真是地址;寄存器寻找是指操做数存储在CPU寄存器中,指令给出的是数据存储的寄存器编号,还衍生有寄存器间接寻址方式,其指令给出的是输出存储在内存中的地址;相对寻址是相对当前指令地址而言的,经过偏移量来寻找操做数地址;基址寻址是将CPU中基址寄存器的内容加上指令格式中的形式地址而造成的操做数的有效地址的方式;变址寻找是把CPU中某个变址寄存器的内容与偏移量相加来造成操做数有效地址的方式;块寻址一般指定数据库的起始地址和数据库的长度,而后寻找一个总体,经常使用于输入输出指令中;段寻址是将存储器按指定大小划分为多个段,而后采用基址寻址方式进行寻址,经常使用在微型机中。(这里只是简单介绍一下,具体的过于复杂,因此不具体说明,能够自行查找资料理解)
一般CPU中还存在一种可以存储和读取数据的暂时存储单元——堆栈(或许你看到它并不陌生,是两种数据结构)。堆栈是一种能存储和取出数据的暂时存储单元,分为串联堆栈和存储器堆栈两种形式。不少计算机把存储器的一部分用做堆栈,堆栈与其余形式存储器的差异在于其对数据的存取方法和寻址方法,其堆栈的主要存储特色是数据先进后出。
从宏观角度来将能够将当下的程序设计语言划分为低级语言和高级语言两种,低级语言大多直接与硬件指令打交道,而高级语言则与硬件自己关联并不紧密。
低级语言可分为机器语言(二进制语言)和汇编语言(符号语言),这两种语言是面向机器的语言,和具体机器的指令系统密切相关,机器语言使用指令代码编写程序,而汇编语言使用指令助记符号来编写程序。因为低级语言效率地下,并且多被机器限定,因此就诞生了高级语言。
相对低级语言而言,高级程序设计语言摆脱了对硬件设备机器指令的束缚,其自成体系,常见的有C、C++、Java等。可是因为计算机只能识别并执行二进制的机器指令,因此高级语言编写的程序大多须要借助汇编程序或对应的编译程序将其自己翻译成二进制的机器指令。因此高级语言入门快、适用度高,可是其效率相对而低。
程序是一个指令序列,这个序列明确告诉计算机应该执行什么操做、应该在什么地方找到用来操做的数据,一旦把程序装载入内存中,就能够有计算机自动完成取出指令和执行指令的任务,而用来完成这项工做的计算机部件称为中央处理器,简称为CPU。
CPU是计算机中最重要的部件之一,其必须有指令控制、操做控制、时间控制和数据加工处理四个级别功能。指令控制就是程序的顺序控制;操做控制就是指一条指令的功能每每是由若干个操做信号组合来实现的;时间控制是对各类操做实施时间上的定时;数据加工就是对数据进行算术运算或逻辑运算。
CPU主要有运算器、cache区和控制器三大部分组成。其中控制器由程序计数器、指令寄存器、指令译码器、时序产生器和操做控制器组成;是计算机的命令指挥中心,能够从内存中取出一条指令并指出下一条指令的内存地址,能够对指令进行译码和测试并产生相应的操做控制信号支配元件完成动做,同时指挥和控制CPU、内存和输入/输出设备之间数据流向。运算器由算术逻辑单元(ALU)、累加寄存器、数据缓冲寄存器和状态条件寄存器组成;是计算机正真执行数据加工处理的部件,受控制器支配,能够执行全部的算术运算和逻辑运算,并进行逻辑测试等。下面是CPU结构模拟图:
从图上能够看出CPU中有数据缓冲寄存器(DR)、指令寄存器(IR)、程序计数器(PC)、地址寄存器(AR)、累加寄存器(AC)和状态条件寄存器(PSW)六类主要寄存器(寄存器就是临时存取器,是一种临时存储数据的空间)。
数据缓冲寄存器(DR)
数据缓冲寄存器用来暂时存放从内存储器读取的一条指令或一个数据字或向内存存入一条指令或一个数据字。其做为CPU和内存、外部设备之间信息传送的中转站,能够补偿CPU和内存、外围设备之间在操做数度上的差异。有时也做为操做数寄存器使用。
指令寄存器(IR)
指令寄存器用于保存当前正在执行的一条指令数据。当执行一条指令时,首先把其从内存读取到缓冲寄存器中,而后在送往指令寄存器,由指令译码器对指令的操做码字段进行译码和测试后,向操做控制器发出具体操做的特定信号。
程序计数器(PC)
程序计算器也称为指令计算器,其主要用于记录下一条指令的内存地址。在程序开始执行前,必须将它的起始地址即第一条指令所在的内存单元地址送人程序计数器,当执行这条指令时,CPU会自动修改程序计数器的内容为下一条指令的地址。因为大多数指令都是顺序执行的,因此修改过程一般只是简单的加1。
地址寄存器(AR)
地址寄存器用来保存当前CPU所访问的内存单元的地址。因为内存和CPU之间存储操做数度上的差异,因此必须使用地址寄存器来暂时保存地址信息,直到内存的读/写操做完成为止。当CPU和内存进行信息交换,即CPU向内存存/取数据或CPU从内存中读取指令时,都要使用到地址寄存器和数据缓冲寄存器。
累加寄存器(AC)
累加寄存器简称累加器,其是一个通用的寄存器。主要用于当运算器的算术逻辑单元执行算术或逻辑运算时,为算术逻辑单元提供一个工做区;其能够暂时存放算术逻辑单元的运算结构信息。
状态条件寄存器(PSW)
状态条件寄存器用于保存由算术指令和逻辑指令运行或测试的结果对应的各类条件码内容,例如运算结果进位标志(C)、运算结果溢出标志(V)、运算结果为零标志(Z)、运算结果为负标志(N)等等。一般这些标志分别由移位触发器保存。同时状态条件寄存器还保存中断和系统工做状态等信息,以便使CPU和系统能及时了解机器运行状态和程序运行状态。状态条件寄存器是一个由各类状态条件标志拼凑而成的寄存器。
信息从什么地方开始,中间通过哪一个寄存器或多路开关,最后传送到哪一个寄存器,都要加以控制。在各寄存器之间创建数据通路的任务,是由称为操做控制器的部件来完成的。操做控制器的功能,就是根据指令操做码和时序信号,产生各类操做控制信号,以便正确地创建数据通路,从而完成取指令和执行指令的控制。
计算机因此可以自动工做,是由于CPU能从存放程序的内存中取出一条指令并执行这条指令;紧接着又是取指令,执行指令……如此构成一个封闭的循环,当遇到“中止”指令时中止工做并退出。
CPU的工做过程实际上是程序的执行过程,现在的计算机都是基于“程序存储”的概念设计制造的,程序存储就是将程序经过输入设备传送到存储器保存起来的过程。而计算机只能识别二进制数码,CPU只能识别机器指令,因此咱们一般编写的程序或安装的其余程序都是在特定环境或系统下编译以后的程序,然而只有在其特定的执行环境下才能被解析为指令加载到内存中,因此说程序就是一个指令序列。
当启动一个程序的时候,会将这个程序对应的资源和自己指令序列输入到内存中,而后CPU从中检索出入口指令,并有CPU解码为指定的CPU控制信号并支配其余硬件设备完成,执行过程也就是数据运算的过程,逻辑运算控制其执行其余指令的顺序,算术运算计算执行指令的结果,而后将运算的结果写回到内存中以备继续使用,依次循序工做,直到全部指令执行完毕。上面的过程可使用如下示意图来表示:
上面的示意图,用于描述计算机CPU执行程序指令的基本过程。
计算机执行程序的指令(指令由操做码和地址码组成,操做码表示运算性质,地址码表示操做数在存储器中的位置)序列是逐条执行的,每执行一条指令基本上可分为四个步骤:1、取出指令,从存储器(主要指内存)某个地址中取出要执行的的指令送到CPU内部的指令寄存器暂存;2、分析指令,把保存在指令寄存器中的指令送到指令译码器,译出该指令对应的微操做;3、执行指令,根据指令译码,向各个部件发送相应的控制信号,完成指令规定的各类操做;4、为执行系一条指令作好准备,取出下一条指令地址循环上面步骤。
CPU字长是衡量CPU性能的一个重要标准,CPU字长表示CPU一次可以传输的二进制数码位数,现今出现最多的有8位、16位、32位和64位的CPU,其位数越高则其运算精度越高、运算速度越快。8位CPU和16位CPU经常使用于微处理设备,例如手持设备等;32位和64位CPU经常使用于PC等。
或许会发现一个规律,CPU的字长都是8的倍数,能够用2的N次方表示,为何?咱们知道计算机中规定8位为一字节,因为CPU出现了寄存器和缓冲区,因此一般状况下以字节或更大的字做为信息处理的单位进行传输。而一个字由多个字节组成,因此CPU的字长一般为8的倍数。
数据或指令在内存中一般使用内存地址来描述,地址就是一种编号,即其是有0和1两位数码组合而成的编号。对于一个N位的CPU来说,其每一条指令能够包含N位二进制数码,即N个0和1进行组合而成的数码,那么从排列组合的方式上看,其最多能够有2N个组合结果,也便是说一个n位的cpu最多能够在内存中读取2n个内存地址。这种cpu对内存寻址的能力称为寻址空间,即对应cpu来说内存的实际使用问题。
对于一个32位的CPU来说,其最大的内存寻址空间为232=4294967296个,为了更准确的描述其空间大小,使用byte(字节)来表示其存储空间大小。也就是说32位CPU的寻址空间为4294967296byte=4G,64位的CPU寻址空间可高达17TB,这个内存空间称为物理内存,而后对实质的操做系统而言,好比Windows XP系统支持的实际寻址空间为2.5G~3.5G之间。
上面也提到了操做系统,或许你也会发现,Windows Vista以后发布的操做系统都提供了32位和64位两个版本,其主要是针对32位和64位CPU而定制的。32位的CPU一次可以提取4个字节的数据,64位的CPU一次可以提取8个字节的数据。32位的操做系统或程序能够在32位的CPU中运行,也能够在64位的CPU中运行,可是效率不能达到最高;而64位的操做系统或程序只能在64位的CPU中运行,其设计能够向下兼容。
经过上面的介绍,对计算机的基本工做原理应该有必定的印象。计算机主要包括运算器(CPU)、存储器(内存)、控制器(CPU)、输入设备、输出设备五个部分,所以计算机的工做离不开主板、CPU、内存三个硬件环境,同时为了可以见证计算机的工做效果也必须存在输入/输入设备。下面就这五个基本部分来看一下计算机的基本工做原理,如图:
图中“红线”表示数据流向,“黑线”表示控制流向。CPU控制器控制输入设备、输出设备以及内存使用,程序被输入设备以指令序列的方式输入到内存中,CPU控制器从内存中读取一条条指令,并根据指令的译码发出一条条控制信号给运算器和存储器来完成规定的操做功能,而后CPU控制器控制其以适当的方式经过输出设备输出最终操做结果。咱们能够经过下面一个模拟图更清楚的理解这个过程,如图:
至于CPU内部的工做过程能够参考《2.2 CPU的工做过程》。
提示一个小常识:计算机的主板上存在一个微弱电源维持BIOS芯片内BIOS系统(包括系统时间、引导系统、内存数据等)的正常运做。当主板接通外部电源的时候,BIOS系统会检查全部硬件环境是否存在或正确安装,若是经过则正常启动引导系统,不然会做出相应的警告提示。只有全部的硬件设备完善才能是计算机正常工做。
现下的计算机存储系统包括磁盘、内存、缓存区和寄存器等四大类型,固然其缓存又可分为多个级别,例如一级缓存、二级缓存等。下面来看一下其如何协调工做的。
程序存储在磁盘中,当打开程序化,有操做系统平台或对应的执行平台将程序指令化,转换为一系列指令序列并送往内存中,若是程序过大则会借助虚拟内存(虚拟存储器)来暂时寄存部分指令,内存加载部分指令;而后将入口指令送往CPU的寄存器,由CPU运算器和控制器执行指令,若是须要读取数据,则从内存或缓存中取出数据,若是须要一条指令,则从内存或缓存总取出指令,在送往CPU进行运算或执行;一条指令执行完成后将结果暂时写入到寄存器或CPU缓存或内存中,接着执行程序的下一条指令,从内存或缓存中读取下一条指令送往CPU中进行指令,依次循环,便可完成一个程序的执行,当遇到中止指令是则中止执行并退出程序。
这篇文章或许讲的比较乱,甚至有些东西我本身都尚未搞清楚,一些名词都是本身理解并给出释义,或许并无给出明确的解释,但愿读者见谅,本文大部份内容来自互联网资料的整理。虽然咱们搞软件的并不必定须要深刻研究这些东西,可是了解一下老是有益无害,并且这些都是基础理论知识,对软件的学习多多少少都有必定的帮助。
若是须要了解的更深刻,则能够自行查阅资料,并整理分享给你们。