《穿越计算机迷雾》笔记
原子=质子+电子,原子之间的电子活跃产生电流,非活跃产生电阻。
电流,导体,非导体。用开关控制通电和无电状态表示1和0。
利用电阻和电流发明电灯。
利用电流和二进制简化加法器的实现。全加法器和半加法器。
电能生磁。通电的线缠绕在导体上,使导体具有磁性,成为电磁铁。
磁能生电。在磁场附近运动的导线能产生电流。
电流由于传输的损耗变为热能。
控制通电或者不通电或者通电的时间长短+续电器实现远距离通电+匀速运动的纸张+协议,实现电报。
将声音抽象为震动的频率,将这种频率转换为磁场的变化,及电流的强弱变化,再将电流的变化转成磁场,使弹簧运动产生震动,实现电话。
交流电能使用变压器进行变压,所以使用交流电变为高压电远距离传输民用供电。电压越高损耗越小。
电流集聚变化时,会发出电磁波。电磁波的发现,使用电磁波可能能实现无线通信。
逻辑学用符号表示,用0和1表示真和假事件。用符号表示非、与、或、异或。
逻辑电路:用电源开关和电生磁续电器表示非门、与门、或门、异或门。
使用逻辑电路实现加法器的内部原理。加减乘除法四则运算的逻辑电路实现。
振荡器(脉冲)的电路实现(反馈、矛盾的非门)。低频率的振荡器。
电子二级管的发明,真空中的高温负极向正极发射电子使电路接通。
电子三极管的发明,利用通电金属网在二级管中间控制电子的流量。可以进行电信号的放大和缩小,并实现极高频率的震荡器。开启电磁波通信时代。
电路实现触发器,触发器能够保存一个bit。
当S和R都打开时,两个灯泡一个亮另一个不亮,并保持不变。初始时不确定谁亮。
S(set)闭合R打开时Q亮(true),,R(reset)闭合S打开时Q不亮(false)。Q'与Q相反,通常不关心Q'。
R和S同时关上后都不亮。
使触发器的输入和输出都只有1个电路。
再加上两个与门保护设置后Q的状态。
输入D(data),CP(控制端)。得到一个用于保存1bit的电路(输入D后,将D的值保存于Q中),触发器(D为输入值,Q为保存值,CP为开关)。只有当CP打开时才会开始根据D的值修改Q,当CP关闭的时候,D最后的值决定了Q保存的值。
边沿触发(分为上升沿D触发器和下降沿D触发器),两个D触发器组合起来实现。这样就不需要人为同步比特和控制的输入时间了。
上升沿D触发器只有在CP脉冲的上升沿触发,也就是只有在控制端的输入从0变为1的一瞬间,会把当时比特位输入的值存到右边的Q中。(左边的Q相当于一个临时缓存值)
将多个上升沿D触发器连接,形成一个移位寄存器,每次开关通电,每个节点的比特位会被设置成前一个节点的比特位。(位移实现乘除法)
输出总是和上一次相反,称为乒乓触发器、反复触发器、T(Toggle)触发器。
半机械半电子实现的计算机 或者 电子二极管、三级管的计算机,速度特别慢。
本征硅,纯硅,晶体(结构对称有规则,有固定的熔点),半导体。还有铢也一样。
晶体管代替电子管:
在纯净本征的半导体两边分别掺杂硼和磷,能使它导电性改善,并具有单向导电性。称为晶体二极管。
如果掺杂的是砷和镓,也能制作出晶体二极管,还会发光。称为发光二极管(LED),经过 特殊处理还能控制光的颜色。耗电少不发热。
晶体二极管有单向导电性,但是不能放大电子流量。
本征半导体两边掺杂硼,中间掺薄薄的(1微米-10多微米(千分之一毫米=微米))磷,将3处通电,具有放大作用,称为晶体三极管。
晶体管可以比电子管体积小很多(小到肉眼看不见,但是需要外壳保护导致体积大一些),并且不需要机械运动。不需要高电压就能工作。
乒乓触发器,每次CP上升时,输出Q的值都会变化一次(0、1)。使用晶体管代替电子管
多个乒乓触发器连接,形成一个二进制数,每次CP输入都会导致这个二进制数加1。![]()
相当于进位。每一次脉冲会使计数产生自加一操作。
寄存器:用于保存计算的中间结果。将D的值保存到Q中。
把输入先放到寄存器,再使用寄存器中的值输入到加法器里面进行运算和输出。
使用寄存器,减少输入端数量,变为一个输入端。
使用寄存器保存计算的中间结果,否则无法连加。
RA可以存放来自不同输入端的数据,但是不能同时有多个一起来,否则输入会互相影响导致错误。
用开关来实现电路的开关,控制输入的开关(半导体实现而不是电路),称为传输门。将多个bit的开关合成一个。
一个5bit的输入(5条数据线总称为总线),传输门GA、GB,寄存器RA、TR,(K..为寄存器开关、传送门开关)和一个加法器实现了一个完整的加法运算电路(实现计算器的输入和连加运算)。传送门的作用是使多个数据轮流使用总线而不冲突。
实现(+ 10 5 7 2)操作:初始全部开关打开。操作流程为:
将10存到RA中:输入10,合Kga,合Kra,断Kra,(断Kga),
将10+5存到TR中:输入5,(合Kga),合Ktr,断Ktr,
将TR的值移动到RA中(TR中的值会变为30):断Kga,合Kgb,合Kra,断Kra,断Kgb,
再加7:输入7,合Kga,合Ktr,断Ktr,
将22移动到RA中(TR中的值变为溢出):断Kga,合Kgb,合Kra,断Kra,断Kgb,
再加2:输入2,合Kga,合Ktr,断Ktr,断Kga。
此时TR中的值为24。RA中的值为22。
简化操作:
将上述4个开关进行封装后提供另外几个人性化的接口。
封装后留下的接口:(在我们的新电路模块中实现以下逻辑电路)
输入:还是一样,去拌动输入数的几个bit开关。
装载:将输入数放到RA中。
相加1:将输入数和RA值相加保存到TR。
相加2:将TR值移动到RA中。
除了以上输入(前4个开关)-->输出(后4个开关)的对应关系,剩余的输入会使输出全为0。
由于D上升沿触发器的特性,输入需要在寄存器合上之前合上才能使寄存器正常工作,所以需要进行改造。使用了1个非门,2个与门。以及一个用2个上升沿D触发器制作的循环移位寄存器(RR(初始t0=1;t1=0;))。
存储器
存储一个bit,且支持读写操作。输入输出共用一个口,读写为访问控制(access)。
5bit的二进制数的存储器
4个5bit数的存储器
地址译码器:把访问控制输入变为只有一读一写,使用地址输入来寻址。
封装后的存储器接口:地址(二进制数的数量)+控制(W/R)+数据(I/O)。及随机访问寄存器(Random Access Memory(RAM)),访问任何地址的二进制数所花的时间都一样。需要用电,易失性存储器。
磁芯:电子管和晶体管用来制作存储器太费钱,体积也太大。所以曾经使用磁芯来代替。断电也能保存原来数据,读会导致原数据丢失需要再写回。
利用存储器和加法器。先存储,再计算。
将输入数存放到存储器,然后再顺序的取出来相加。
冯诺依曼认为,存储器不止可以存操作数,还能存命令。
将开关也使用振荡器代替,并且在完成任务后震荡器会停下。无需人为操作。
计算机指令越来越多,译码器会根据不同的指令做不动的操作。称为指令集。
寄存器越来越多,机器字长越来越大,运算器支持基础的数学运算。
冯诺依曼体系结构:存储器+运算器,指令和数据都存放在存储器,在控制器的指挥下,指令一条一条的自动执行。
哈佛体系结构:不常用
搭上物理学发明的便车,计算机迅速发展,体积从大到小:
续电器(电磁感应开关)->电子管(真空电子辐射)->晶体管(半导体)->集成电路(价格低、体积小的晶体管集合)
磁芯存储器,静态存储器(SRAM)
电容器:减少存储器中的晶体管数量。(DRAM)
只读存储器:(ROM)
微代码ROM:代替加法器等逻辑门电路部件。
运算器和控制器集成到单独的芯片里,称为CPU,没有振荡器,需要外接其他部件,外接线做成引(线)脚。每个CPU都有自己的指令集。
CPU执行命令时,内部速度很快,但是与外接部件相连,外接部件速度慢。速度得不到匹配,CPU执行命令时经常处于等待状态,拖慢了CPU的速度。需要平衡处理器和内存的速度。
流水线技术:将大的指令拆成多个小动作组成。
逻辑电路1和逻辑电路2可以并行工作,CPU等待周期变短。
超标量体系结构:允许CPU在一个时钟周期内运行多条指令。
将每条指令分为3个动作:取指令、译码、执行。3条指令的不同动作可以在同一时钟周期执行,由于是不同的指令,所以3个动作不需要串行。
跳转指令(执行后才知道接下来是顺序执行还是跳转到某处开始执行)开始执行时,它后面的两条指令已经进入流水线,这种情况下,处理器只能清空流水线,从将要跳转的目标地址重新读取指令。
分支预测功能:增加额外电路来预测将要发生的跳转(可能跳转),预测成功则正常运行,预测失败则清空流水线重新读取指令。
高速缓存技术:基于局部性原理。使用SRAM来制作高速缓存。
高速缓存的命中率依赖于高速缓存的设计和软件的编写技巧。
丰富的I/O设备使计算机不止能计算数学题,还能丰富我们的生活,做更多的事情。一切东西都可以作为IO设备。
连接IO设备:与IO设备相连的逻辑电路中,有一些寄存器,称为I/O端口,负责缓存通信双方的数据。
所有端口都像内存地址一样顺序编号,方便读写。
1:划分内存地址给IO端口用
2:专用于访问IO端口的指令
插口规格统一。
数字-模拟 信号互相转换。
扩展槽。
声卡(将麦克风的音频电流数字化,将连续不断的数字模拟化,并驱动扬声器)、显卡、网卡等插在扩展槽上的接口卡,都是为了信号转换而存在的。
模拟信号->数字信号->IO端口(位于接口卡上,设备不同需要不同数量的端口,用途不同)。
插口处引脚数量就是电路接通数量。
常用的接口卡就直接焊在(集成)主板上。比如串行口、并行口、USB接口(二进制数据的传输,不需要信号转换)?
现代IO接口都有自己的微处理器,能执行与设备相关的程序指令。
CPU轮询IO端口的数据,无用功做的太多,出现了中断(硬件中断)技术。
IO接口和CPU之间用专门的线路来传送中断信号,每种外设都分配了各自不同的中断号。
当硬件发来中断号时,CPU会做上下文切换,执行中断处理程序。
最重要的硬件中断是定时器发来的。
直接存储器存取(DMA): 外围设备可以通过DMA控制器直接访问内存,与此同时,CPU可以继续执行程序。存储器(内存) 和 存储器(IO接口缓存)之间的高速、直接传送。CPU初始化这个传输动作,后面的传输动作本身是由DMA控制器实行和完成的。总线控制权由CPU交由DMA控制器,结束后又交给CPU。 DMA请求、DMA响应、DMA传输、DMA结束4个步骤。
键盘:
能输入256个字符。
显示器:
一道电子束,不停的上下移动占满整个屏幕,在移动的过程中不停的变化强弱。(黑(0)白(1)电视)
刷新率:每秒刷新次数。
显卡中的显存用于缓存屏幕上的像素数据。
灰度:颜色从黑变白经过的每一种颜色,目前流行256种灰度。
彩色:三束电子流,各自控制自己的强弱。
24位真彩色:256*256*256=16 777 216种搭配。
为了凑整数对齐,一般使用32位,但是最后8位无用就设置为0。
屏幕制作技术:CRT(阴极射线管)显示器,液晶(液态晶体)显示器。
注:组成物质的分子、原子之间的距离不同基本决定了物质的形态(固态、液态、气态)。
加电压的液晶排列会发生变化,依然整齐。
旋光性:很多晶体可以使光线发生旋转。
注:光也是电磁波(沿各个方向震动的波)。电磁波和声波不同。
偏光片:滤掉各个方向的光,只留下震动方向和沟槽一致的光线。
玻璃不属于晶体
很多晶体具有旋光性,也包括液晶。
使用液晶
增加电压改变液晶的排列反向。
这样就能使用液晶原理显示黑白两个颜色。
1:程序给出一些重要参数,加上数学公式就能计算出屏幕最终显示的图像,而程序就不用依次去设置每一个点了。
2:将显存分成几个部分,叫做位平面,每次只把一个位平面的内容显示在显示器,就能流程的播放动画了。
上述两项从CPU中移到GPU中进行,减轻CPU负担。
计算机启动过程:
通电时,ROM中已经有数据,而RAM还是空的。CPU开始从ROM中取出指令来执行:检测各种部件、初始化。ROM中还包含少量常用的外部设备驱动程序。该ROM也被称为BIOS(basic input/output system)
CPU执行BIOS中的代码进行POST(Power On Self Test),如果发现硬件有问题CPU就通过喇叭发出不同的音调加以提示,并向某个约定的端口发送二进制数字代码表示出错原因,可以通过仪器进行测试。
例:POST过程中,内存单元会全部被写一遍又读一遍看看是否符合预期行为。
ROM存放初始化程序,我们的程序存放在外存上。
外存(辅助存储设备):
留声机:将声音的震动频率刻在圆盘上,之后通过刻的坑控制纸片发出声音。
钢丝录音机:电磁头在钢丝上留下剩磁,通过剩磁产生电流,经过放大后发出声音。
磁带录音机:用磁带代替钢丝。
以上都是顺序检索,随机检索则比较麻烦。
硬盘:不同的磁场表示0和1,双面可存储。
磁盘属于外设,有自己的IO端口,有中断功能,也采用DMA机制。
为了提高存储设备的IO速度,发明了不同的IO接口:ATA(IDE,并行)、SATA(串行)。
扇区是硬盘读写的基本单位,通常每个扇区能存储512字节。
CPU给硬盘IO接口发出指令,把磁头号、柱面号、扇区号、数据在内存中的地址告诉IO接口的端口寄存器,剩下的工作由硬盘来自动完成。
光记录:光盘。大功率激光束的有无,使某些地方的化学材料透光性变差,另一些没变化。
垂直记录技术:磁盘技术优化,每个比特的磁场立起来,像钉子一样楔入磁层中。磁场消失的时间变长。
巨磁阻效应:有的东西的电阻会受到磁场的影响,非常微弱的磁场变化就能显著改变它们的电阻。应用在硬盘上,磁盘技术优化。
固态磁盘:半导体材料和集成电路的结合产物。U盘(使用USB接口)、手机存储卡、固态硬盘等,内部没有机械旋转,只有集成电路芯片,体积小。贵。
固态硬盘在内部模拟成可以按扇区来读写,在外部与传统的硬盘接口保持一致。向前兼容。
操作系统:CPU执行完ROM的指令后,需要开始加载执行外存上的操作系统,以管理整个系统。版本丰富,侧重点不同,所以没有固化到ROM中。磁盘上可以存放多个操作系统。
OS自举流程:
CPU从ROM中取得指令执行(期间检测硬盘和系统初始的布置工作)后,CPU把硬盘0面0磁道1扇区(称为主引导扇区)的内容读入内存,然后执行一个跳转指令进入这里继续执行。(ROM中紧挨着读取和检测主引导扇区指令的是一个跳转指令)
主引导扇区:446Byte启动指令和数据 + 64Byte分区表 + 2Byte花码(01010101 10101010) = 512Byte。
分区表指明这块物理硬盘被分为几个部分,允许4个主分区,每个分区16字节,指明起始位置和大小、类型(哪种OS负责管理)、是否为活动分区(可以启动的,只能有一个)。
主引导扇区的启动指令分析读入内存的分区表,找到唯一的活动分区,算出该分区的起始位置,
从那个扇区读入操作系统写在那里的引导代码,将它读入内存,接着执行读入的扇区内容。(操作系统的引导代码位于各个分区的前若干个连续的扇区中)
OS主要功能:
任务调度:主板上的时钟电路定时向CPU发出一个中断,时钟中断是无条件产生的。CPU收到硬件中断就会上下文切换,放下当前任务,去处理中断,而CPU要执行的中断指令是操作系统的一个组成部分,也就是调度程序。完成多进程的切换,并发执行进程。
虚拟内存:抽象存储空间,与物理存储区分对应,进程只知道虚拟内存,更灵活,可以将磁盘当成内存用。
设备管理:将设备的使用权合理的分配个各个进程。向程序提供API,使用硬件驱动与硬件通信。
文字处理软件:存储的格式与普通文本不同。普通文本只存文字的编码,没有字体、颜色、图片等等功能,但是普通文本简单通用。
压缩解压软件:无损压缩和有损压缩。压缩的本质就是改变存储方式,减少重复数据。解压则是与压缩反向的操作。有的文件是无法压缩的,因为它的存储已经很精辟了。
数字图像:二进制表示图像,可以编辑图像。图像格式:JPEG、GIF、TIFF、PNG等,可以减小图像所占存储空间。
数字视频:连续显示的图片(帧),视频格式(包含声音压缩):MPEG、H.26*等,删除连续图片之间的韧余。
计算机的发展,促使很多信息被编码成二进制存储和流通,因为计算机核心只能处理二进制。
计算机语言:二进制(指令集+参数)->汇编(与二进制一一对应的符号语言)->高级语言(概念抽象、容易阅读、跨平台、移植性、编写效率)
计算机病毒:对机器、用户等有害的软件。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构