如果希望可以把计算机编程技术提升到另外一个高度,,那么想要搞清楚什么是软件设计,首先就要理解什么是计算机软件,在这之后,再去考虑为什么对软件进行设计,以及在通常情况下应该怎样设计软件。
作为开端,首先来说说计算机到底是什么样子的电子设备,它是由那些部分组成的,以及这些部分在计算机程序运行中都起到了什么样子的作用。在初版的计算机中最核心的部件主要有三个:控制器,运算器和存储器。其中控制器和运算器主要针对于指令集层面,需要挂靠到CPU中,才会发挥作用机制。
中央处理器就是我们常说的CPU(Center Processing Unit)。起始是我们常常所了解的集成电路芯片,这种电路芯片一般都会通过高分子纳米技术的光刻机刻录到一块硅晶体电子版中,并且统一进行分割成为多个CPU芯片的主板上面,一个CPU可以包含了几十亿哥晶体管,我们可以理解一下电控开关机制(0和1信号量)。
随着摩尔定律的慢慢陨落,CPU性能提升方向已经慢慢从纵向转换为横向,这是为什么呢?原来就是CPU中只有一套客户意向配合的提供计算的集成电路。这样的一套电路被称之为一个CPU核心(core)。只会拥有一个CPU核心(逻辑内核)的CPU被称之为单核CPU。
如果希望提高CPU的性能机制,那么就必须要进行改进CPU核心的电路结构,以及相关的电路密度机制,这就是所谓的纵向发展计划。也就是说只会焦聚于单核心的优化机制。
单核心的优化技术体系,如下所示:
CPU芯片的电路底版,主要用于承载CPU核心数以及相关的器件,单个CPU核心的电路密度已经很接近物理上的极限阈值,所以,每个CPU工厂的厂商都开始陆陆续续的研发推出拥有很多核心的CPU机制体系,我们称之为多核心CPU,一个多核CPU会有多个CPU核心,或者多套集成电路,这些CPU核心之间的必须会保持独立且相互合作的方式,从而可以的拥有几个或者十几个核心,有的最新的CPU甚至拥有几十个多核心之多。
每个CPU核心都会拥有自己独立的控制器,运算器和寄存器。简单来说,控制器只会着运算器和寄存器,并一次来实现CPU指令的执行,以及数据的读出和写入。
运算器:主要用于各种算数和逻辑运算操作,比如说算术中的加、减、乘、除以及逻辑上的与或非、异或运算等,此外还有我们很少了解的移位和比较、传送等。
寄存器:在进行运算操作期间,在CPU运算计算器程序的过程中,临时存储那些马上就要用到得的指令和数据。包括了CPU指令、中间运算结果、程序运算状态以及相关的内存指令地址和数据地址。
所有的相关的控制器和运算器都是会频繁的使用到寄存器的,有的时候甚至需要独自占有寄存器,所以它们之间是想当的密切的。
存储器是哟个可以将数据或者相关信息写入进来,并且永久性或者临时性存储下去,等待需要进行读取的时候,就需要进行读取操作,所以我们定义在一定的条件下可以存储的了数据的器件都可以称之为存储器,例如:硬盘、SSD或者U盘、移动硬盘等都是。
其实,这里多说一句,指令也算是一种数据,一种可以是驱动CPU执行某种操作的数据,其中也会包含了很多中操作的代码以及包含内部相关操作的数据信息。(也可能是对应的存储地址)。而对于数据而言:一般属于哪种静态存储在某个地址中的具有某种格式或者结构的内存信息内润。
存储器作为计算机核心部件大概有三种:寄存器、高速缓冲存储器和内存存储器、以及我们常用的硬盘存储器。
寄存器的速度是最快的,它属于CPU核心里的一种组件。
高速缓存也用于暂存的指令和数据,但它暂存的往往是近期会用到的数据,而不是马上就要用的数据,速度仅次于寄存器
内存存储器,速度慢于前两者的速度机制,但是高速缓冲存储器是两者的桥梁,所以不会造成过大的速度瓶颈。