(电脑装机)硬件参数的解读软硬件协同 前言近日换了电脑,在选购各类硬件时,对硬件做一个汇总CPUCPU是最核心的部件,整个计算机的抽象是:数据输入→数据处理→数据输出.CPU进行了数据处理的工作.CPU的工作是从内存拿数据,经过计算后写回内存并控制硬件.CPU参数主频和时钟周期主频表示每秒钟的运行次数,例如主频5.0GHZ,表示每秒运行50亿次.时钟周期是主频的倒数CPU架构和IPCIPC表示每周期指令数(Instructions Per Cycle).和架构相关.越新越先进的架构IPC越高.假设有n1代和n2代CPU,n2的IPC高于n1,在相同频率下n2处理能力更强.架构常常被忽略,但他也是CPU的重要指标.CPU缓存通常看见有L1,L2,L3这三个级别的缓存.缓存的基本策略是比内存更靠近CPU,读写比内存更快.缓存相对于内存有着优先的级别.缓存越大,计算机运行越快.这里有几个值得思考的地方:1.CPU缓存的内容缓存的内容是数据,就是说除了数据,函数或者进程都可以是缓存的内容.1)缓存的申请在C语言的语法中,声明临时变量可以用register修饰符申请寄存器空间(不保证成功),只要稍有计算机原理的知识就明白,宝贵的寄存器空间是很难申请到的.但这语法毕竟是存在的.由此可以引申是否可以把数据或者函数申请为缓存空间,如/*c语言代码*/ register int number; //申请寄存器空间 /*伪代码*/ L1 int number; //在L1缓存上开辟一个4字节空间缓存申请的可行性比寄存器申请大得多.以270k plus为例,L1(未注明),L2为40MB,L3为36MB,比起以字节为单位的寄存器大了许多.笔者不知道现在哪种语言有这种语法,或许以后随着技术发展,开发语言会提供类似支持.2)缓存内容预测缓存的特点是快速读取或者写入,最可能的是1-栈空间,提升程序执行速度.2-硬件中断程序,3当前程序中的频繁被访问的数据或者频繁被调用的函数.2.CPU缓存调度算法缓存有L1~L3几个等级,也有轻重缓急之分.数据在缓存之间的调度,以适应现实情况.调度至少有两个因素:一数据优先级;二数据使用频次.某些数据需要的快速响应程度,处于较高的数据优先级,保证处于某个缓存级如果数据被使用的频次较多,从较低的缓存级往较高的缓存级移动.反之往相反方向移动可以按照加权平均,或者固定加权平均的思路来编写调度算法,当然这是写操作系统的人干的,只做一些思考.实际效果如何,该怎样调整,都需要测试.3.缓存需要操作系统的支持网上搜索CPU读取内存数据必须经过CPU缓存吗,得到的答案是CPU先从缓存读取,再从内存读取.笔者在这里产生了一个误解:CPU可以做选择,从两个不同的物理介质和数据互动.实际上CPU是被动执行指令.所有传给他的数据都是由操作系统决定的.操作系统以进程为单位和CPU交互数据.如何理解CPU先从缓存读数据呢?操作系统对缓存和内存统一编址,CPU寻址先从缓存地址开始查找.操作系统维护了类似的数据表:序号区域类别大小序号进程号进程名大小1L1缓存1/1process 1重启/2L2缓存240MB2process 2关机/3L3缓存336MB3process 3主进程1/4内存//4process 4主进程2/操作系统数据表缓存2数据表上面两个表实际上是操作系统的页表系统的一部分.每次通电开机,当前使用的芯片把缓存的大小这个数据传给操作系统---所以左侧的表可动态更新.最主要的是操作系统有CPU缓存的控制权.64位机理论上寻址16EB地址空间,PC的物理内存通常在16~256GB,完全不用担心缓存的寻址问题.指令周期和机器周期这两个参数和CPU间接相关.1个指令周期是从取指到指令执行完毕的时间,包含多个机器周期(取指,访存等),一个机器周期等于若干时钟周期(主频的倒数)内存内存负责运行时数据的存储.一方面外部硬件把数据传给内存,另一方面内存把数据传给CPU处理.内存的主要参数是内存大小和频率.这两项参数常常在装机时让人产生焦虑,理解工作原理后没那么大的困惑了.内存大小当前所有进程占用的空间.进程大小和内存大小没有很大的关系.举个例子:一个游戏占200GB大小硬盘空间,但他是分场景载入内存的.例如一个场景占8个G,切换场景时用新场景数据替换旧场景占用的空间.win11本身占了几个G空间.内存不够时可以用硬盘空间作虚拟内存,计算机仍然能跑,只是速度会慢下来.内存频率这是选购电脑内存时最大的焦虑所在.按照电脑IPC的思路,如果IPC1,那么一个5.5GHZ的核心,能处理的指令就有5.5G条,即55亿条.intel的Ultra 7 270k plus的8大核16小核.每秒钟只看大核可以处理55x8440亿条指令.按照dd5 6000MHZ的双通道计算,每秒传输的数据在6Gx8x296GB,按照每条指令占2或3个8字节(64位)的大小,总共有96G/8/2或3,即60亿条或40亿条指令,远远不够.然而实际情况不是这样的.CPU执行一条指令有取指令,译码,执行,访存和写回几个阶段.取指令阶段看是从缓存中或者内存中取,速度差别很大.译码和执行,才是看架构和主频.访存和写回,对应的指令大概是这样:/*访存*/ movw 0x01,%rax /*写回*/ movw %rax,0x01根据0x01的位置---内存或者缓存的不同,差异同样很巨大,从几个机器周期到几百个机器周期.IPC是一个参考指标.270k plus支持内存频率在7200~8000MT/s之间说明了这个问题.内存负责给CPU喂数据,CPU负责处理并回传数据给内存.综合来讲,对内存频率的要求应该排在CPU主频和缓存大小之后.主板主板给硬件提供了物理接口.注意硬件和接口间的匹配.例如B860m,Z890系列主板支持intel的LGA1851 接口,支持显卡接口PCI5.0,支持PCI4.0固态硬盘接口.机械硬盘的sata接口,内存支持ddr5.有的接口向下兼容:例如PCI接口,有的不兼容,例如内存ddr5不兼容ddr4.主板另一个指标是供电能力.PC硬件中最需要电力的部件是CPU和显卡,保证他们在高负荷下的供电是稳定运行的前提.通常按照供电相数来表达.有的611,1211等电源电源通常按照:最大负载x120%~130%来计算电源额定功率硬盘存储数据和程序的物理介质.这个选择是根据个人情况来的.硬盘有固态硬盘和机械硬盘.固态硬盘当下用PCI4.0,m.2 nvme接口,有qlc和tlc颗粒之分.笔者的两次固态硬盘都选了tlc颗粒,所以对qlc颗粒没有感觉.固态硬盘的重要指标是读写速度.之前用win10系统,PCI3.0接口 500GB读取速度在3500MB/S,本次换了PCI4.0 1TB 读取速度7000MB/S,说实话,没什么特别感觉.假设加载一个8GB大小的场景到内存中,两者速度上理论上虽然差了一倍,实际上就差1秒多一点时间.本身就只配了16GB的内存,加上有多少大的程序给你加载很大的数据,所以这块感觉差别不大.另一个焦虑点是固态硬盘的寿命问题.笔者前一块硬盘用了将近8年,下载软件测试后磨损在2%,照这个速度也不会焦虑(TLC硬盘,平时没有大量数据写入)另外,PC端程序转向网页端喊了很多年,只有当网速足够快的时候,硬盘才没有优势.当前还是不行的,就算是千兆网络,理论上每秒载入内存才125MB/S,和固态硬盘的速度差距还很大.当然局域网可以突破这个限制.像网吧很多都是无盘的电脑,数据存在网吧服务器上.开机后把硬盘的映像载入服务器供个人使用.显卡这是玩大型游戏需要用到的.显卡是图形图像处理设备.主要的参数有图形处理单元个数,带宽,显存大小.在需求端,影响显卡的是画质和刷新率,画质越高,刷新率越高,需要处理的数据越多,意味着需要配置更好的显卡.反之如果可以接受低画质和低刷新率,也就用不着那么好的显卡.基于此多年前的显卡也能跑当前的很多游戏.显卡的工作流程是这样的:在游戏(或者其他场景)中发出指令,CPU处理完后,将数据传给内存,内存传给显示框架(如OpenGL).接受到参数后,分给GPU(以5060ti为例,其中有4000多个流处理单元)并行处理,计算出结果后传给显存,再送到显示器.流处理单元越多计算能力越强,感觉到的硬件延迟越小体验越好.带宽有128bit,192bit,256bit等大小,但笔者觉得带宽是显卡内部传输通道,和显存频率一起决定图形数据的上限,所以可以不用关心.显存在以前没多大关注,但现在的游戏由于数据量大,也跟着重要起来了.例如玩某个游戏,如果开高画质在某个场景切换时突然画面卡住(俗称爆显存),如果想流畅运行就要考虑降低画质了.显卡的选购全凭个人,因为价格差距太大,从几百块到几万都有.机箱机箱选大一点的,方便散热和走线.过去有个教训:因为听说装机的商家在机箱和电源上能挣钱,所以压缩预算配了个小机箱,结果内部走线卡得很紧把硬盘线压住了,用了几年后硬盘损坏了.所以机箱不要配太小.超频超频通过加电压的方式把硬件如CPU,内存,显卡频率拉高,榨取其性能.硬件发烧友喜欢做的事.超频一是要加大硬件成本,如主板选用支持超频的,价格上比不超频的主板要高.二是有一定的风险,如硬件损坏后不能保修.三是看超频能实际提升多少.如果图省心就不考虑超频