计算机
计算机的组成主要分为以下几个部分:

  • 输入单元:键盘、鼠标、读卡器、扫描机等等由外部设备向计算机内部输入信息的设备单元。
  • 主机部分:主机部分通常叫做系统单元,位于主机机箱内部,主要包括 CPU、内存、显卡、硬盘、电源等设备。
  • 输出单元:计算机向外部世界输出信息的设备单元,包括显示器、打印机等。

计算机 - 图1
理论上,主机的运行是不需要输入单元和输出单元的,但是计算机最终要为人类服务,所以没有输入单元和输出单元是无法提供帮助的,没有输入单元和输出单元的计算机也没有任何价值。
不过计算机的核心就是位于主机部分的硬件设备,如果拆开过机箱就会发现,主机内部其实就是一块主板,主板上安插了各种硬件设备,CPU、内存、硬盘等都安装在主板上面。
整部主机最重要的就是 CPU,CPU 也叫做中央处理器,CPU 的内部有非常多的芯片,还有一种称为微指令集的东西,这些微指令集可以做各种操作,不同的 CPU 型号能做的操作也不同。CPU 的主要工作就是运算和指令处理,分管这两个功能的单元分别被称为算术逻辑单元控制单元。所以说 CPU 的主要工作就是获取外部提供的数据,进行运算、指令处理后再传输给外部设备。
那么 CPU 获取的信息究竟是从哪来的呢?
内存提供。而内存提供的信息和数据则是由输入单元通过总线放入内存中的。CPU 在执行完运算后,也需要把数据写回到内存中,由内存传输到输出单元,经过输出设备处理后使用。

CPU 架构

CPU 架构是一切设计的起点,使用的软件都要通过 CPU 内部的微指令进行处理后才能发挥其作用。而这些微指令又被分为两种设计:精简指令集 ( RISC )复杂指令集 ( CISC ) ,来讨论一下他们的差异。

精简指令集 RISC

精简指令集顾名思义就是微指令集较为精简,单个微指令无法处理太过复杂的操作,完成的动作也比较单一;不过此类指令集处理性能比较好,但是要做更复杂的事情,则需要多个指令配合一起完成。
比较常见的 RISC 有 PowerPC、ARM、SPARC 等,基于这种架构的处理器在智能手机、平板电脑、笔记本电脑、游戏机和台式机以及越来越多的其他智能设备中很常见。

复杂指令集 CISC

与 RISC 不同的是,CISC 是一种被称为复杂指令集的架构,CISC 在每个微指令集可以继续划分,指令集中的每个指令可以单独完成低阶操作,整个指令集却能够处理复杂的工作,这种指令集架构相对复杂,指令数目众多,而且指令执行的周期比较长。
比较常见的复杂指令集有 AMD、INTEL、VIA ,最常见的就是 x86 指令集架构,常用于个人电脑,因此个人电脑也被称为 x86 指令集架构的电脑。x86 架构其实指的是一个家族,也就是 8086 、80286 和 80386 CPU 代号。
计算机中的各种设备单元都通过主板连接在一起,主板中有一块芯片组,这块芯片组用于链接所有设备单元,它们统一由 CPU 发送指令,协同配合工作。
计算机的各种硬件设备和人类的躯体非常相似:计算机的 CPU 就如同人类的大脑,由大脑来控制身体的各种动作;内存就如同脑袋中的记忆体,这部分用于给大脑提供信息,驱使大脑对信息进行分析,做出判断。
记忆体分为两种,一种是当前正在思考的记忆区块,一种是当前不太需要,但是需要时可以提取的记忆区块,可能不太好懂,举个简单的例子:工作的时候不会想着今天被子叠没叠吧?吃饭的时候不会想着马桶冲没冲吧,因为没人会给自己找不自在。这就是记忆深处的区块,这也是硬盘的主要功能。
主板相当于是神经系统,神经系统会有各种突触,受到刺激之后由大脑做出反应,主板中也会有各种元器件,收到外部信息后由 CPU 做出处理;人体的四肢就是各种输入输出设备,这个很好理解;显卡就像是大脑中的视觉神经,想象力是一个非常棒的东西;电源就是心脏,供血的,电流就像是血液,没血不行,电脑没电也不行。
所以其实计算机也是人的一种抽象

计算机用途分类

能够接触到的计算机分类比较少,最常见的就是个人计算机,其他计算机类型可能接触比较少。这里和大家聊一下计算机都分为几种(按照电脑的复杂度进行分类):

  • 超级计算机(Super Computer):这种计算机一般都是国家技术中心所使用的,维护成本非常高,主要用于超高速计算,比如国防军事、仿真等一些国家型项目使用的。
  • 大型计算机(Mainframe Computer):大型计算机虽然计算速度没有超级计算机那么快,但是也可以说是计算机中独一档的存在,一般用在地区型项目、国企项目、证券交易所等。
  • 小型计算机(Mini Computer):小型计算机是一类多用户计算机,通常用在中小企业、实验室,相比于大型计算机,小型计算机体积更小。
  • 微型计算机(Micro Computer):微型计算机一般常指 20 世纪后期的计算机,这也是经常使用的电脑的一类统称,除了个人计算机外,还包括车载电脑、智能手机、掌上电脑等。

    硬件杂谈

    由于计算机中的主板的位置很重要,通常主板上的芯片组是影响性能的主要因素!计算机早期的芯片组分为南桥和北桥,北桥负责链接速度较快的 CPU、内存和显卡之间的接口,南桥负责链接速度较慢的硬盘、USB、网卡等等。不过现代的计算机都会把 CPU 和北桥融合起来,所以北桥一般是看不见的。
    上面说到了不同的 CPU 具有不同的微指令集,不同的微指令集其指令所执行的操作是不同的,并且处理效率也不一样,不过,不同的 CPU 除了指令集架构不同外,它们的 CPU 频率也不一样。
    CPU 频率就是 CPU 一个周期可以执行的指令数量,拿跑步举例子来说,就是这个人在 10s 内能跑多少米,他的速度是多少。CPU 频率以 GHz(千兆赫兹)为单位,下面是三种不同频率的 CPU ,感受一下。
    计算机 - 图2
    所以频率越高也就意味着这个 CPU 的处理效率更高,单位时间内能做更多的事情,也就更受人们待见,同样造价也就更贵。但是这里要注意一点,不能和不同的 CPU 指令集之间比 CPU 效率,因为指令集不同是无法进行比较的。
    上面这些知识点想必大部分程序员应该都知道,确切的应该说懂点电脑的人都懂,但是下面这些知识可能没听过。
    CPU 的工作频率会分为外频和倍频,外频指的是 CPU 和外部设备元件进行数据传输时的速度,倍频指的是 CPU 内部用来加速工作效能的一个倍数,外频和倍频的乘积才是 CPU 频率速度。
    现在组装电脑动不动就搞什么超频,超频是啥?之前理解的意思就是说这个 CPU 能够发挥到最大性能,但是好像有点太含糊,今天花了点时间理解了一下。
    超频是一种增加硬件工作频率的操作,超频不单单用在 CPU,叫做 CPU 超频,还可以用在 GPU 上,叫做 GPU 超频。使用超频的确会使每秒执行更多的操作,压榨 CPU/GPU ,发挥极致性能,但是也会产生额外的热量,需要更强大的冷却手段。
    (下面以 CPU 来进行说明,GPU 也适用。)
    CPU 通常在出厂时会设置以某个最大的速度运行,如果在 CPU 冷却的情况下运行,不会产生任何问题。但是如果不想限制 CPU 速度,使其发挥最大性能,那么需要在 BIOS 中设置更高的频率来提高 CPU 工作效率。但是如果冷却装置不太行,可能会造成屏幕蓝屏或者重新启动,容易造成物理损坏。
    但是超频在某些情况下不是想超频就能超频的。许多主板和 Intel CPU 都带有锁定的乘法器,防止修改它们的值进行超频操作。不过 Intel 更多的是未带有锁定乘法器的 CPU,目标是希望超频并从 CPU 中榨取极致性能,只能说,这很英特尔。一般 K 系列的都是可以超频的。
    这里给大家推荐一款工具, CPU-Z ,能够检测自己的电脑情况。
    计算机 - 图3
    不过现在某些 CPU 都会自动地进行超频了,有可能会发现 CPU 频率一直在变动,这个不用担心,没坏。
    除了超频这种性能提升之外,还有一种称为超线程 ( Hyper-Threading, HT ) 的机制。
    这是一种软件方面的性能提升,因为现在使用的 CPU 基本上都是双核以上,CPU 在执行任务的同时,也会等待内存或者缓存传过来的数据(因为 CPU 比内存快太多了), 所以 CPU 有很多闲置的时间,为了提高 CPU 的利用率,减少其划水的时间,后面有了多线程,不过注意一点,这个多线程和超线程可不一样。

    超线程是什么

    当有大量的任务需要执行时,使用多线程技术对于单核来说只是提升了它的执行效率,但是没有提升并行性,在某个时刻看到的 CPU 还是只能执行一个程序,因为还是一个核,这其实是一种假并行。但是超线程可不一样了,它可以同时执行两个程序,这如何实现的呢?
    真实情况是 CPU 每个核还是单独的那个,只不过它会抽象出来一个核,所以说超线程就是把物理内核抽象为虚拟内核的过程,超线程允许内核同时做两件事情,它就是把 CPU 内部的一些寄存器分为两块,让程序运行各块的寄存器,超线程不经操作系统的多任务切换。
    上面说到 CPU 的所有数据都是来自主存储器,也叫做内存,不管是什么数据,都需要读入内存之后才能让 CPU 使用。用的内存组件主要是 动态随机存取内存 ( DRAM ) ,随机存取只能在通电时使用,断电后数据就会直接消失。
    DRAM 也更新了好几代了,主要分为 SDRAM 和 DDR SDRAM 两种,这两种内存的差别除了胶位和工作电压上的不同之外,DDR 用的是类似 CPU 倍频的技术,能够达到双倍数据传输的速度,也就是说能够传输双倍的数据,而且传输效率方面也比 SDRAM 要好,所以新一代的个人计算机一般用的都是 DDR。
    DDR SDRAM 又依据技术的发展,分为 DDR、DDR2、DDR3、DDR4 这几代,DDR2 的频率是 4 倍,DDR3 的频率是 8 倍,目前使用的是 DDR4 ,可以够到 16 倍,效率杠杠的。
    除了频率这一因素之外,内存容量也是很重要的一个因素,由于所有的数据都需要装载到内存中才能运行,所以如果内存容量不够大的话可能会导致应用程序无法运行,这时候有同学会说,内存不是会不断地进行换入换出么,所以内存只要有一定空间就可以了。确实是这样,不过这样频繁的换入换出,电脑的运行效率也不会很高,所以为啥 2GB 的内存跑的就不如 4 GB 的快了,因为换入换出也是需要时间的!
    除了容量之外,还应该考虑的一个因素是总线宽度,总线宽度就是总线一次能够传输的数据量是多少。一般总线宽度是 64 位,为了加大一次能够传输的数据量,厂商通常将两个主存储器汇总在一块,如果一个内存是 64 位,那么另外一个也是 64 位,这样加起来就能够传输 128 位数据了,而且最好内存的型号也一样。
    主板上的内存插槽一般都是两两成对的,这就是为了双通道的设计而来的,所以内存条插的时候为什么讲究 1、3 和 2、4 这么插了。
    RAM 一个最显著的特征就是电源断电后,内存中的信息会被清空,这样可不太行,所以计算机内部还有一种断电之后还能够保存数据的元件,这就是 ROM ( Read-only memory ) 。一个最常见的使用 ROM 的地方就是存放 BIOS 程序的。BIOS 是一套程序,它被写死到主板上面,主板上面存储 BIOS 的芯片即使断电也能保存数据,这就是使用了 ROM。
    说完内存相关,再来说一下硬盘。
    计算机 - 图4
    这是一个比较清晰的硬盘构造图,可以看到硬盘盒中由许许多多圆形磁盘、机械臂、磁盘读取头、马达所构成。实际的数据都是写在磁盘中,由马达负责驱动机械手臂,然后让机械臂中的磁盘读取头对圆形磁盘进行读写。这一个个的圆形磁盘就是存储数据的地方,其内部构造如下所示。
    计算机 - 图5
    磁盘是通过其物理表面划分成多个空间来使用的。划分的方式有两种:可变长方式和扇区方式。前者是将物理结构划分成长度可变的空间,后者是将磁盘结构划分为固定长度的空间。一般 Windows 所使用的硬盘和软盘都是使用扇区这种方式。扇区中,把磁盘表面分成若干个同心圆的空间就是磁道,把磁道按照固定大小的存储空间划分而成的就是扇区,扇区是最小的物理存储单元。通常在读写时,会由外圈向内圈进行读写。
    像这种传统的硬盘有个致命的问题,就需要马达驱动对磁盘进行读写,这会造成很严重的磁盘读取延迟(因为不知道数据是存在哪个扇区的,数据存储得比较分散)。后来有厂商拿闪存(外存的一种,也是非易失性的)造成高容量的设备,外形和硬盘一样,这种磁盘叫做 固态硬盘(Solid State Disk,SSD) ,传统的硬盘叫做 Hard Disk Drive, HDD
    固态硬盘最大的好处就是它没有马达,不需要转动,它具有内存直接读写的特性,没有数据延迟,所以读写速度快,不过 SSD 有致命的缺陷就是它会限制写入次数,因此一般 SSD 用两年就差不多了,所以存放数据时,需要考虑到备份,要使用 RAID 机制防止 SSD 的损毁。