今天主要搞了计算机硬件相关的基础知识。现代计算机都是以冯诺依曼模型为底层逻辑设计的,也就是说现代计算机包括了四个部分,输入和输出系统,存储器,控制器和算术逻辑单元。但这是底层逻辑,我们是可以将其进行优化的,也就是将算术逻辑单元与控制器集成在一起,并且扩充输入和输出系统的范围。这就是今天我们要探讨的内容。
第一个是CPU(中央处理器),这里面逻辑上包括了,寄存器,算术逻辑单元和控制单元。算术逻辑单元我们好理解,就是计算机中进行数据运算的地方。上面我们讲了,数据运算是包括逻辑运算,移位运算和算术运算的,逻辑运算包括与或非异或,移位运算包括算术移位,循环移位,移位运算。算术运算其实是五则运算,在加减乘除这四则运算上加上了一个除余,也就是求余数的运算。如果我们在进行一个很复杂的运算并且需要存储中间值是,这个寄存器就发挥了作用。实际上来说,发挥作用的是寄存器的一部分——数据寄存器。数据寄存器就是一个存储运算中间值的高速存储单元(最然说这里也是存储,但并不归类于存储器),其他的还有程序计数器和地址寄存器。地址寄存器是用来存储CPU从内存中抽取出来的指令的地址,程序计数器是用来存储当前指令的地址(其实我感觉用状态这个词更好),等到地址更换的时候,程序计数器加一。控制单元其实和冯诺依曼模型中的同名词不太相同,这里的控制单元是指控制其他的子系统,而冯诺依曼模型中的控制单元明显更加全能,它还可以直接控制输入输出设备(实际上,我们是无法直接控制这些的,而是通过接口实现间接控制)。
第二个是存储器。提到存储器,我们不光要知道用什么存储,还得知道如何存储。前面我们知道,用位模式来存储一个数据是很明智的选择,同时也是计算机内部唯一一种选择。所以我们就从位模式出发,把存储空间搞清楚。每一台计算机中,有n个位组成一个叫做字的存储单元,大多数时候是八位,但是依然有特例。每一个存储单元都有唯一一个特征来标记它,这里用的是地址,也就是计算机地(这个词也确实生动形象)。所有的存储单元所代表的位加起来就是空间容量。空间容量的单位有KB,MB等等,KB是2^10,MB是2^20,还有其他什么KMB,MMB也都是上述两种方式的乘积。索要存储的内容和位数之间是成对数关系,前面有讲过。好的,之后呢我们得了解主要存储的类型,包括RAM和ROM,他们都是随机存储,但是RAM可以写入数据,ROM则不行。RAM暂时还可以分为两种,一种是SRAM(静态存储)和DRAM(动态存储),动态存储是用电容器进行信号的存储,放电为1,不放电为0。但我们都知道,电容器时间长是会漏电的,所以DRAM必须每个一点时间就必须得刷新,这是为了保证其中资料的完整性,这也就带来了速度较慢的弊端。SRAM使用触发器门电路来存储信息,触发为1,不触发为0。和DRAM相比,SRAM是一直通电的,只要有需要存储的信息,他就可以快速响应,所以速度也就比DRAM快(至于快多少我就不知道了),而且不需要固定时间刷新内存地址。可如果突然断电了,RAM(不论是DRAM还是SRAM)都无法工作,并且其中的数据也会消失。ROM则不会,即使是断电了,他其中的数据也是会保存在其中而不会丢失,并且因为它只读的特性,ROM相对于RAM的安全性更好,通常情况下会把系统的一些启动程序放在ROM中(当然也会有其他的一些程序在里面)。虽然我们不能通过常用手段将数据写入ROM,但是还是有一些特殊工具可以做到这种事情,比如EEPROM使用电子脉冲来写入数据和擦除数据。还有一种集成在CPU中的存在,就是高速缓冲存储器。这个是介于寄存器和主存之间的中间地带,速度也是如此。在介绍这个东西之前,我们先了解一下他的工作过程,首先CPU检查高速缓冲寄存器中是否存在想要处理的内容,如果有那就直接处理。如果没有,那CPU需要联络内存将所需要处理的内容及其之后的部分进行复制到高速缓冲寄存器之中,之后在执行程序。因为8-2原则,计算机花费8成时间进行2成数据的读取,如果我们高速缓冲寄存器之中有了该内容,那么就相当于节省了8成的时间,速度固然加快。
第三个是输入输出系统,这个系统可以按照是否存储数据分为两类,存储设备和非存储设备。非存储设备相对来说简单一点,它的功能是实现计算机和外界的通信,我们通常所说的键盘鼠标打印机之类的都是非存储设备。存储设备是用来存储或者备份数据,虽然速度较慢,但是可以再断电的情况下存储数据。输入输出系统中的存储设备被称为外存,是指在计算机外部存储数据的设备(硬盘也是属于外存),上面的RAM,ROM,寄存器还是高速缓冲存储器都是内存这个集合中的元素。常见的存储设备的原理有磁存储设备和光存储设备,典型代表分别是磁盘/磁带和光盘。磁盘是一层层磁片压制而成,磁片分为磁道和间隔,磁道之间有分为扇区和间隔,我们通过读写头将数据进行读写。他的性能影响因素大致有三个——角速度,寻道速度和传送速度。角速度好理解,转的快,找的快嘛。寻道速度是读写头查找到索要数据的时间。传送速度是将数据传送的CPU中的所需要花费的时间。另外一种就是光存储设备,它使用激光将模板盘刻出一个又一个小坑,然后再倒模,塑封。一个小坑就是0异或1,用这种方式存储数据,我们又如何读写数据呢?其实上面的制作过程就是写入过程,只不过用的是烧录光盘,相当于一个半成品。读取的过程使用塑封时在其上面覆盖的反射层,坑处会反射两次,非坑处会反射一次,通过他们在标签的上的不同印记来区分0与1,这样就达到了读的效果。
好的,这三个部分我们知道了,那我们就来探究一下它们之间是如何实现通信的吧。CPU和存储之间是通过被称为总线的三类线连接,分别是数据总线,地址总线和控制总线。因为他们其中的每一类都有若干条相同类型的小线,所以不能认为数据总线就是一根线。数据总线中线的具体数量要根据计算机具体存储空间的大小(log2N),地址总线的具体数量是根据每一个字的位数,控制总线的数量是根据索要控制的数量(log2N)。
上面我没有提到输入输出设备,这主要是因为它和存储器与CPU之间的介质不同。输入输出设备可以是磁设备、光设备或者其他设备,而其余两个只能是电子设备。因为介质因素而导致的速度差距是很大的,所以我们需要一个中介来消除这种差距,这个中介就是接口或者叫做控制器。接口分为串行和并行,串行是指一次只能传输一位,而并行一次可以传输多位。常见的有火线,USB,HDMI,雷电等等。火线是顺序结构。usb是串行的树形结构,所有的设备都是连接到一个根部——跟集线器,下面又可以分为很多个集线器,不同设备就连接在集线器上。
上面是计算机导论的内容,下面是数据结构的内容。
我了解了一下线性表,它是相同数据类型组成的有限序列,是从1-N,这里和数组从0开始的形式不同。这里的每一个符号都是地址在线性表中简单的表示。线性表可按存储结构分为两类,按照顺序结构存储的是顺序表,另一种就是不按链式结构存储的链表。顺序表的操作较为简单,删除,求长度,定位,插入,取结点之列的,冒泡排序学会后就变得很简单了。
我的问题,昨天没有写完,我会深刻检讨的。