随着工作年限的增加和工作内容的深入,不知不觉的发现想要成为一名优秀的IT工程师,对于一些底层原理的了解是必不可少的。遂希望能在文章中概括的记录一些比较重要的方面,来助力初学者以及希望有大致轮廓的同学一个比较系统的概念。由于我也是非科班出身(本科通信,研二重点才重点关注的计算机),对有些地方的理解可能也不是透彻,可以一起讨论。由于平时工作比较多,很难抽出时间,目前希望能够每一两周能够输出一篇文章,前期是一些基础理论方向的,后期可能会结合工作中的一些项目多聊聊一些技术解决方案的事情。
简介认识计算机,首先了解计算机到底是什么。我们以一种高视角看上去,它整体分为两部分,即硬件系统和软件系统。
那么,再分下去,硬件系统有哪些呢?无非是:
1.CPU(运算器、控制器、Cache)
2.存储系统(高速缓存、主存储器、外存设备)
3.输入/ 输出设备等主要组成部分
那么这些硬件系统之间靠什么联系的呢?
答曰:它们总是通过总线和接口连接在一起,就和社会学原理大致一样,人和关系构成整个社会体系。实体设备和线路网构成计算机硬件体系。
此处应有最经典冯诺伊曼体系配图:
简而言之就是,以存储为中心,总线为联系,分散控制。
以下是几个核心组成的定义和作用:控制器:按规定管理指挥,类似于人的大脑。处理指令的。
功能:
1.正确执行每条指令(单条指令),也就是 取-》分析-》执行
2.保证指令按规定序列自动连续执行。(多个指令)
3.对异常情况和请求及时响应和处理。
运算器: 数据加工
其主要功能包括:
1.算术运算,逻辑运算
所有的运算功能由一个被称为ALU(算术逻辑单元)的电路完成。
功能强的ALU还能执行:定点运算、浮点运算,向量运算。
2.暂放参加运算的数据和中间结果。(由多个通用寄存器来完成)
存储器:
其一般分为三级,分别是高速缓冲存储机器,主存储器,辅助存储器,这三级存储器的存储介质,工作原理,以及特性也各有差异。目前的计算机存储体系一般是缓存->主存->辅存这三级存储体系,如图
系统总线:
借助系统总线的连接,计算机在各系统部件之间实现地址信号,数据信号,控制信号的传送。
CPU:CPU 相当于计算机的大脑,主要是和内存进行交互,从内存中读取指令和数据并且执行它们。
说到CPU,就得去提一提指令集,目前主流CPU都是基于X86 指令集,像ARM 有ARM指令集,还有我们的荣誉产品龙芯用的MIPS指令集,不同的指令集决定了可以执行程序的隔阂,即X86的程序在ARM上不能执行。
同时,为了实现CPU能处理数据更快,往往CPU中有自己的寄存器来存储一些关键变量和临时结果。一般而言,指令集中会有一些指令把一些关键字从内存中加载到寄存器中,反之也有。与此同时,cpu中还有一些跟程序执行的过程状态有关的寄存器。比如堆栈指针寄存器,程序状态字寄存器等等,这些寄存器在进程调度,函数调用等情况下起着至关重要的作用。
在我们买电脑的时候,经常会听到几核几线程,那个究竟是什么呢?多核指的是CPU 芯片上都具有多个的处理器或内核。多核芯片在其上有效地承载了多个个微型芯片,每个微型芯片都有自己的独立CPU。
存储设备