基本的计算机工作原理是什么_基本的计算机工作原理
为了解决各种问题,人们发明了无数的机器。计算机有很多种,从嵌入火星漫游机器人的计算机到操作核潜艇导航系统的计算机。冯诺依曼在1945年提出了第一个计算模型。几乎所有的电脑,无论是笔记本电脑还是电话,都遵循着和这个型号相同的工作原理。你知道电脑是如何工作的吗?本文将讨论这些内容:
了解计算机架构的基础知识。
选择编译器,将代码转换成计算机可以执行的指令。
根据内存层次提高数据存储速度。
毕竟在非程序员眼里,编程应该像魔术一样神奇,我们程序员不会这么看。
体系结构
计算机是根据指令操作数据的机器,主要由处理器和存储器组成。内存,也叫RAM(随机存取存储器),用来存储要操作的指令和数据。处理器,也称为CPU(中央处理器),从内存中获取指令和数据,并执行相应的计算。接下来,我们将讨论这两个部分的工作原理。
储存;储备
存储器被分成许多单元,每个单元存储少量数据,这些数据由一个数字地址来标识。当在存储器中读取或写入数据时,一次操作一个单元。
为了读写一个特定的存储单元,必须找到该单元的数字地址。
因为存储器是一个电子元件,单元地址通过信号线作为二进制数传输。
二进制数以基数2表示,其工作原理如下:
每条信号线传输一位,高电压表示信号“1”,低电压表示信号“0”,如图7-1所示。
对于一个给定的单元地址,存储器可以执行两个操作:获取它的值或存储一个新值,如图7-2所示。存储器包括用于设置操作模式的特殊信号线。
每个存储单元通常存储一个8位二进制数,称为一个字节。当设置为“读取”模式时,存储器检索存储在单元中的字节,并通过八条数据传输线输出它们,如图7-3所示。
当设置为“写”模式时,存储器从数据传输线获得一个字节,并将其写入相应的单元,如图7-4所示。
传输相同数据的一组信号线称为总线。用于传输地址的八条信号线构成地址总线,用于在存储单元之间传输数据的另外八条信号线构成数据总线。地址总线是单向的(仅用于接收数据),而数据总线是双向的(用于发送和接收数据)。
在所有的计算机中,CPU和RAM无时无刻不在交换数据:CPU不断地从RAM中获取指令和数据,偶尔将输出和一些计算存储在RAM中,如图7-5所示。
中央处理器
CPU包括几个称为寄存器的内部存储单元,可以对存储在这些寄存器中的数字执行简单的数学运算,还可以在RAM和寄存器之间传输数据。您可以指示CPU执行以下典型操作:
将数据从存储位置220复制到寄存器3;
将寄存器3和寄存器1中的数字相加。
CPU能够执行的所有操作的集合称为指令集,指令集中的每个操作都被分配一个编号。计算机代码本质上是代表CPU操作的一系列数字,以数字形式存储在RAM中。输入/输出数据、部分计算和计算机代码都存储在RAM中。
通过在RAM中包含重写部分代码的指令,代码甚至可以自我修改,这是计算机病毒逃避防病毒软件检测的常用方式。同样,生物病毒通过改变自身的DNA来躲避宿主免疫系统的攻击。
图7-6摘自Intel 4004操作手册,显示了将一些CPU指令映射成数字的方法。随着制造技术的发展,越来越多的操作由CPU来支持。现代CPU的指令集极其庞大,但最重要的指令在几十年前就存在了。
CPU的运行是无止境的,它不断地从内存中获取并执行指令。这个循环的核心是PC寄存器,PC(程序计数器)是“程序计数器”的缩写。PC是一个特殊的寄存器,用来存储下一条要执行的指令的存储地址。CPU的工作过程如下:
(1)从PC机指定的存储地址获取指令;
(2) PC是自增长的;
(3)执行指令;
(4)返回步骤1。
当CPU通电时,PC被重置为默认值,这是计算机中要执行的第一条指令的地址。这个指令通常是一个不可变的内置程序,用来加载计算机的基本功能。
在许多个人电脑中,这个程序被称为BIOS(基本输入输出系统)。
CPU通电后,会继续执行这个“get-execute”循环,直到关机。但是,如果CPU只能按照一个有序的顺序列表进行运算,那就和一个花哨的计算器没什么区别了。CPU的神奇之处在于,它可以指令它将新值写入PC,从而分支执行进程或“跳转”到内存中的其他位置。这种分支可以是有条件的。以下面这条CPU指令为例:“如果寄存器1等于0,将PC设置为地址200”。该指令相当于:
如果x=0 compute _ this()else compute _ that()
仅此而已。无论你是打开一个网站,玩一个电脑游戏,还是编辑一个电子表格,所涉及的计算是没有区别的。它们都是一系列简单的操作,只能对内存中的数据进行求和、比较或移动。
大量的简单操作可以组合起来表达复杂的过程。以经典的《太空侵略者》游戏为例,它的代码包含了大约3000条机器指令。
早在20世纪80年代,《太空侵略者》 CPU时钟风靡一时。这款游戏在配备2 MHz CPU的街机上运行。“2 MHz”是指CPU的时钟,即CPU每秒能执行的基本运算次数。时钟频率为200万赫兹(2 MHz)的CPU每秒可以执行大约200万次基本操作。完成一条机器指令需要5到10次基本操作,所以老街机每秒可以运行几十万条机器指令。
随着现代科技的发展,普通台式电脑和智能手机通常配备2 GHzCPU,每秒可执行数亿条机器指令。如今,多核CPU已经投入大规模应用,如四核2 GHz CPU每秒可执行近10亿条机器指令。展望未来,搭载CPU的核心数量可能会越来越多。
CPU架构读者有没有想过为什么PlayStation的游戏光盘不能在台式电脑上运行?为什么iPhone应用程序不能在Mac上运行?原因很简单,因为它们的CPU架构不同。
X86架构已经成为行业标准,所以同样的代码可以在大多数个人电脑上执行。但是考虑到省电的要求,手机采用的CPU架构是不一样的。不同的CPU架构意味着不同的CPU指令集和不同的将指令编码成数字的方式。台式电脑CPU的指令不是手机CPU的有效指令,反之亦然。
32位和64位架构第一款CPU是Intel 4004,采用4位架构。换句话说,这种CPU可以在一条机器指令中对多达4位的二进制数进行求和、比较和移动。英特尔4004只有四条数据总线和四条地址总线。
不久之后,8位CPU开始流行,用于早期运行DOS的个人电脑。上世纪八九十年代,著名的便携式游戏机Game Boy采用了8位处理器。这种CPU可以在一条指令中对8位二进制数进行运算。
随着技术的飞速发展,16位架构和32位架构已经成为主流。CPU寄存器增加以容纳32位数字。更大的寄存器自然会产生更大的数据总线和地址总线:一条有32条信号线的地址总线可以寻址232字节(4 GB)的内存。
人们对计算能力的渴求从未停止。电脑程序越来越复杂,消耗的内存越来越多,4 GB的内存已经不能满足需求。用适合32位寄存器的数字地址来寻址超过4 GB的内存是很棘手的,这成为了64位架构兴起的动力,现在64位架构占主导地位。一个64位的CPU可以在一条指令中对极大的数字进行操作,而64位的寄存器在一个巨大的存储空间中存储地址:264字节相当于超过170亿千兆字节(GB)。
大端和小端有些计算机设计者认为,数字应该按照从左到右的顺序存储在RAM和CPU中。这种模式称为小端。其他计算机设计者倾向于从右到左在内存中写入数据,这被称为big endian。因此,根据“字节顺序”,二进制序列1-0-0-0-0-0-1-1所代表的数字也是不同的。
大端:27 21 20=131
小端:20 26 27=193
目前大部分CPU采用小端模式,但也有很多计算机采用大端模式。如果大字节序CPU需要解释小字节序CPU生成的数据,则必须采取措施来避免字节顺序不匹配。程序员直接对二进制数进行操作,所以在解析网络交换机的数据时要特别注意这个问题。目前大部分计算机都采用小端的模式,但早期的网络路由器大多使用大端CPU,所以互联网流量还是在大端的基础上标准化的。在小端模式下读取大端数据时,会出现乱码,反之亦然。
在某些情况下,模拟器需要在计算机上运行一些为不同CPU设计的代码,以便在没有iPhone的情况下测试iPhone应用程序,或者玩流行的老式超级任天堂游戏。这是通过称为模拟器的软件实现的。
模拟器是用来模仿目标机的,假设它有相同的CPU,RAM等硬件。模拟器程序解码指令,并在模拟机器中执行它们。可想而知,如果两台机器的架构不同,在一台机器内部模拟另一台机器并不容易。好在现代计算机的速度远超以前的机器,所以模拟也不是不可以。我们可以使用游戏男孩模拟器在电脑中创建一个虚拟的游戏男孩,然后我们就可以像实际的游戏男孩一样玩游戏。
编译程序
通过给计算机编程,我们可以完成核磁共振成像、声音识别、行星探索等许多复杂的任务。值得注意的是,计算机进行的所有运算最终都将由简单的CPU指令来完成,即归结为数字的求和与比较。复杂的计算机程序,如网络浏览器,需要数百万甚至数十亿条这样的机器指令。
但是我们很少用CPU指令直接写程序,用这种方式开发不出逼真的三维电脑游戏。为了以更“自然”和简洁的方式表达命令,人们创造了编程语言。我们使用这些语言编写代码,然后通过一个名为编译器的程序将命令转换为可以由CPU执行的机器指令。
我们用一个简单的数学类比来解释编译器的用途。假设我们请人计算5的阶乘。
5!=?
但如果回答者不知道阶乘是什么,问这样的问题是没有意义的。我们必须用更简单的运算来重述这个问题。
54321=?
但是,如果回答者只会做加法呢?我们必须进一步简化问题的表述。
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5=?
可见,表达式计算的形式越简单,需要的运算就越多。计算机代码也是如此。编译器将编程语言中的复杂指令转换成等价的CPU指令。结合强大的外部库,包含数十亿条CPU指令的复杂程序可以用相对较少的几行代码来表示,易于理解和修改。
计算机之父艾伦图灵(Allen Turing)发现,简单的机器具有计算任何可以计算的东西的能力。如果一台机器具有一般的计算能力,它必须能够遵循包含指令的程序,以便:
读写存储器中的数据;
执行条件分支:如果存储地址有给定值,跳转到程序的另一个点。
我们称具有这种通用计算能力的机器为图灵完全机器。再复杂再难的计算,都可以用简单的读/写/分支指令来表达。只要分配了足够的时间和存储空间,这些指令可以计算任何东西。
最近发现一个叫做MOV(数据传输)的CPU指令是图灵完全的。这意味着一个只能执行MOV指令的CPU在功能上和一个完整的CPU是一样的:换句话说,任何类型的代码都可以严格地通过MOV指令来表达。
这个重要的概念是,不管简单与否,如果一个程序可以用编程语言编写,那么它就可以被重写并在任何图灵完备机器中运行。编译器是一个神奇的程序,可以自动将复杂语言的代码转换成简单语言的代码。
操作系统
本质上,一个编译的计算机程序是一系列的CPU指令。如前所述,为台式电脑编译的代码不能在智能手机上运行,因为它们采用了不同的CPU架构。但是,因为程序必须与计算机的操作系统通信才能运行,所以编译后的程序可能无法在共享相同CPU架构的两台计算机上使用。
为了与外界通信,程序必须执行输入和输出操作,例如打开文件、在屏幕上显示消息以及打开网络连接。但是不同的计算机使用不同的硬件,所以程序不可能直接支持所有不同类型的屏幕、声卡或网卡。
这就是为什么程序依赖于操作系统的执行。在操作系统的帮助下,程序可以毫不费力地使用不同的硬件。程序创建一个特殊的系统调用来请求操作系统执行所需的输入输出操作。编译器负责将输入/输出命令转换成适当的系统调用。
然而,不同的操作系统经常使用不兼容的系统调用。例如,与macOS或Linux相比,Windows使用不同的系统调用在屏幕上打印信息。
因此,在x86处理器的Windows中编译的程序不能在x86处理器的Mac中运行。除了针对特定的CPU架构,编译后的代码还将针对特定的操作系统。
编译优化
优秀的编译器致力于优化他们生成的机器码。如果编译器认为修改部分代码可以提高执行效率,就会处理。在生成二进制输出之前,编译器可能会尝试应用数百个优化规则。
因此,代码应该易于阅读,以便进行微优化。编译器最终会完成所有微小的优化。例如,有些人对下面的代码持批评态度。
函数factorial(n) if n 1返回factorial(n - 1) * n else返回1
他们认为应该做出以下改变:
函数阶乘(n)结果 1而n - 1结果结果* n n n - 1返回结果
不使用递归执行阶乘函数会消耗更少的计算资源,这是事实,但仍然没有理由更改代码。现代编译器会自动重写简单的递归函数,如下所示。
i x y 1 j x y
为了避免两次x-y计算,编译器将上述代码重写如下:
t1 x y i t1 1 j t1
专注于编写清晰易懂的代码。如果存在性能问题,可以使用分析工具找到代码中的瓶颈,并尝试使用更好的方法来计算有问题的代码。另外,避免在不必要的微操作上浪费太多时间。
但在某些情况下,我们希望跳过编译,这将在接下来讨论。
脚本语言
有些语言在执行时并不直接编译成机器码。这些语言被称为脚本语言,包括JavaScript、Python和Ruby。在脚本语言中,代码是由解释器而不是CPU执行的,解释器必须安装在运行代码的机器上。
解释器实时翻译和执行代码,所以它的运行速度通常比编译后的代码慢很多。另一方面,程序员可以随时运行代码,而无需等待编译过程。
对于非常大的项目,编译可能需要几个小时。
谷歌工程师要不断编译大量代码,导致程序员“损失”大量时间(图7-9)。因为需要保证编译后的二进制文件有更好的性能,Google无法切换到脚本语言。为此公司开发了Go语言,编译速度非常快,仍然保持高性能。
拆卸和逆向工程
给定一个已编译的计算机程序,其源代码在编译前无法恢复。但我们可以解码二进制程序,并将用于编码CPU指令的数字转换为人类可读的指令序列。这个过程叫做拆卸。
接下来,你可以看看这些CPU指令,尝试分析它们的用途,这就是所谓的逆向工程。一些反汇编程序对这个过程有很大的好处。它们可以自动检测和注释系统调用和常用函数。借助反汇编工具,黑客对二进制代码的方方面面了如指掌。我相信很多顶尖的IT公司都有秘密的逆向工程实验室来研究竞争对手的软件。
地下黑客经常会对Windows、Photoshop、《侠盗猎车手》等授权程序中的二进制代码进行分析,以确定哪部分代码负责验证软件许可证。黑客修改二进制代码,给它添加一个指令,验证许可后直接跳转到执行的代码部分。当运行修改后的二进制代码时,它在检查许可证之前获得注入的跳转命令,这样它就可以运行非法盗版而不付费。
在秘密的政府情报机构中,还设有实验室,供安全研究人员和工程师研究流行的消费软件,如iOS、Windows和IE浏览器。他们在这些程序中寻找可能的安全漏洞,以防止网络攻击或对高价值目标的入侵。在这些攻击中,最著名的是“震网”病毒,这是一种由美国和以色列情报机构研发的网络武器。通过感染控制地下聚变反应堆的计算机,“深圳”延缓了伊朗的核计划。
开源软件
如上所述,我们可以根据二进制可执行文件来分析程序的原始指令,但是我们无法恢复用来生成二进制文件的原始源代码。
在没有原始源代码的情况下,即使可以稍微修改二进制文件以更小的方式破解,实际上也不可能对程序进行任何大的改动(比如增加新的功能)。有些人提倡协作构建代码,因此他们开放源代码供他人修改。这就是“开源”的主要概念:每个人都可以自由使用和修改的软件。基于Linux的操作系统(如Ubuntu、Fedora和Debian)是开源的,而Windows和macOS是闭源的。
开源操作系统的一个有趣之处在于,任何人都可以检查源代码中的安全漏洞。事实证明,政府机构通过日常消费软件中未打补丁的安全漏洞,使用和监控数百万平民。
但对于开源软件,代码更受关注,所以恶意第三方和政府机构很难植入监控后门程序。用户在使用macOS或Windows时,一定要相信苹果或微软不会危及自身安全,尽最大努力防止任何严重的安全漏洞。开源系统置于公众的监督之下,安全漏洞被忽视的可能性大大降低。
内存层次结构
我们知道,计算机的操作可以归结为让CPU执行简单的指令,这些指令只能对存储在CPU寄存器中的数据进行操作。但是寄存器的存储空间通常限制在1000字节,这意味着CPU寄存器和RAM之间的数据传输必须连续进行。
如果内存访问速度太慢,CPU将被迫空闲以等待RAM完成数据传输。CPU在内存中读写数据所需的时间直接关系到电脑性能。提高内存的速度有助于加快电脑的运行速度,也可以提高CPU访问数据的速度。CPU可以以接近实时的速度(在一个周期内)访问存储在寄存器中的数据,但访问RAM的速度要慢得多。
对于一个时钟频率为1 GHz的CPU来说,一个周期的持续时间大约是十亿分之一秒,这是光从这本书进入读者眼睛所需要的时间。
处理器和内存之间的差距
随着近几年技术的发展,CPU的速度成倍增长。虽然内存速度也提高了,但是慢了很多。CPU和RAM的这种性能差距被称为“处理器和内存的差距”。我们可以执行大量的CPU指令,所以“便宜”;从RAM中获取数据需要很长时间,所以它们“很贵”。随着它们之间的差距逐渐加大,提高内存访问效率的重要性越来越明显。
现代计算机需要大约1000个CPU周期(大约1微秒)才能从RAM中获取数据。这个速度很惊人,但是和访问CPU寄存器的时间相比还是很慢的。减少计算所需的RAM操作次数是计算机科学家追求的目标。
声波在面对面的两个人之间传播大约需要10微秒。
时间局部性和空间局部性
当试图最小化对RAM的访问时,计算机科学家开始注意到两个事实。
时间局部性:当你访问一个存储地址时,你可能很快会再次访问它。
空间局部性:当你访问一个存储地址时,可能很快就会访问相邻的地址。
因此,将这些存储地址保存在CPU寄存器中有助于避免RAM上最“昂贵”的操作。然而,在设计CPU芯片时,工业工程师并没有找到一个可行的方法来容纳足够多的内部寄存器,但他们仍然找到了如何有效地利用时间局部性和空间局部性。这将在下面讨论。
一级缓存
我们可以在CPU中集成一个速度极快的辅助存储器,就是一级缓存。将数据从一级缓存读入寄存器仅比直接从寄存器获取数据稍慢。
通过使用一级缓存,我们将可能被访问的内存地址的内容复制到CPU寄存器附近,从而以极快的速度将数据加载到CPU寄存器中。从一级缓存读取数据到寄存器只需要10个CPU周期左右,比从RAM获取数据快近100倍。
10 KB左右的一级缓存,合理利用时间局部性和空间局部性,仅通过缓存就可以实现一半以上的RAM访问调用。这一创新给计算技术带来了翻天覆地的变化。一级缓存可以大大缩短CPU的等待时间,让CPU把更多的时间花在实际计算上,而不是闲置。
L2高速缓存
增加一级缓存的容量有助于减少从RAM中获取数据的操作,从而缩短CPU的等待时间。但是,增加一级缓存也会降低速度。当一级缓存达到50 KB左右时,继续增加容量需要很大的成本。更好的解决方案是构建一个称为二级缓存的缓存。二级缓存稍微慢一点,但是容量比一级缓存大很多。现代CPU配备了一个200 KB左右的二级缓存,从二级缓存读取数据到CPU寄存器大约需要100个CPU周期。
我们将最可能的地址复制到一级缓存,将更可能的地址复制到二级缓存。如果CPU在一级缓存中没有找到存储地址,它仍然可以尝试在二级缓存中搜索。只有当地址不在一级缓存或二级缓存时,CPU才需要访问RAM。
目前很多厂商都推出了三级缓存的处理器。三级缓存的容量大于二级缓存的容量。虽然没有二级缓存快,但还是比RAM快很多。一级/二级/三级缓存非常重要,占据了CPU芯片内部的大部分硅片空间。参见图7-11。
使用一级/二级/三级缓存可以显著提高计算机的性能。有了200 KB L2缓存,CPU发出的存储请求中只有不到10%必须直接从RAM中获得。
以后读者买电脑的时候,请记得对比一下所选CPU的一级/二级/三级缓存的容量。CPU越好,缓存越大。一般来说,建议选择时钟频率稍低但缓存容量较大的CPU。
一级记忆和二级记忆
如前所述,计算机配备了不同类型的存储器,这些存储器以分层结构排列。性能最好的内存容量有限,成本高。层次往下,可用的存储空间越来越多,但访问速度越来越慢。
在内存层次结构中,CPU寄存器和缓存下面是RAM,它负责存储所有当前正在运行的进程的数据和代码。截至2017年,电脑的RAM容量通常为1 GB至10 GB。但在很多情况下,RAM可能无法满足操作系统和所有运行程序的需求。
因此,我们必须深入探索内存层次,并使用位于RAM下的硬盘。截至2017年,计算机的硬盘容量通常是数百千兆字节,足以容纳当前运行的所有程序数据。如果RAM已满,当前的空闲数据将被移动到硬盘以释放一些内存空间。
问题是硬盘的速度很慢,在磁盘和RAM之间传输数据通常需要100万个CPU周期(1毫秒)a。从磁盘访问数据看起来很快,但是别忘了,访问RAM只需要1000个周期,访问磁盘只需要100万个周期。RAM通常被称为主存储器,而存储程序和数据的磁盘被称为辅助存储器。
标准照片捕捉光线的时间约为4毫秒。
CPU不能直接访问辅助存储器。在执行存储在二级存储器中的程序之前,必须将其复制到一级存储器中。其实每次启动电脑,连操作系统都要从磁盘拷贝到RAM,否则CPU是不会运行的。
确保RAM永远不会耗尽。在典型的活动中,确保计算机处理的所有数据和程序都能加载到RAM中是非常重要的,否则计算机会不断地在磁盘和RAM之间交换数据。由于这种操作速度极慢,电脑的性能会严重下降,甚至无法使用。这种情况下,计算机要花更多的时间等待数据传输,无法进行实际计算。
当电脑不断从磁盘读取数据到RAM时,就说电脑处于抖动模式。必须持续监控服务器。如果服务器开始处理无法加载到RAM中的数据,抖动可能会导致整个服务器崩溃。银行或收银台前会排起很长的队,服务员没办法,只能怪晃动的电脑系统。内存不足可能是服务器故障的主要原因之一。
外部存储器和第三级存储器
我们继续分析记忆的层次。连接到网络后,计算机可以访问由其他计算机管理的内存。它们或者位于本地网络上,或者位于互联网上(即,在云中)。但是访问这些数据需要更长的时间:读取本地磁盘需要1毫秒,从网络获取数据可能需要数百毫秒。一个网络包从一台电脑传到另一台电脑大概需要10毫秒,如果是通过互联网传输的话需要200毫秒到300毫秒,和眨眼差不多。
内存层次结构的底部是第三级内存,它并不总是在线和可用的。将数百万千兆字节的数据存储在磁带或CD中更便宜,但当访问这种介质中的数据时,您需要将介质插入某种读取设备,这可能需要几分钟甚至几天的时间(请尝试在周五晚上让IT部门备份磁带中的数据.).有鉴于此,三级存储只适合归档很少访问的数据。
存储技术的发展趋势
一方面,很难显著改进“快速”存储器(位于存储器层级的顶端)中使用的技术;另一方面,“慢”内存越来越快,价格越来越低。几十年来,硬盘存储的成本一直在下降,而且这种趋势似乎还会继续。
新技术也提高了磁盘的速度。人们正在从旋转磁盘转向固态硬盘(SSD),固态硬盘没有移动部件,因此更快,更可靠,更节能。
使用SSD技术的磁盘越来越便宜,速度也越来越快,但价格仍然很高。鉴于此,一些制造商推出了同时使用SSD和磁性技术的混合磁盘。后者将访问频率高的数据存储在SSD中,将访问频率低的数据存储在较慢的磁盘中。当需要频繁访问以前不常访问的数据时,会将其复制到混合驱动器中速度更快的SSD中。这和CPU利用内部缓存提高RAM访问速度的技巧颇为相似。
总结
本文介绍了计算机的一些基本工作原理。任何可以计算的东西都可以用简单的指令来表示。为了将复杂的计算命令转换成CPU可以执行的简单指令,需要一个叫做编译器的程序。计算机能进行复杂的计算,只是因为CPU能进行大量的基本运算。
计算机的处理器很快,但它的内存相对较慢。CPU不是以随机的方式访问内存,而是遵循空间局部性和时间局部性的原则。因此,具有高访问频率的数据可以被缓存在更快的存储器中。这个原理已经应用在多级缓存中:从一级缓存到三级内存。
本文中讨论的缓存原则可以应用于各种场景。确定应用程序频繁使用的数据,尽量提高这些数据的访问速度,是缩短计算机程序运行时间最常用的策略之一。
——本文选自《计算机科学精粹》。
审核编辑:李倩
推荐阅读
- 刘国梁为什么夸孙颖莎内心干净 如何理解刘国梁对孙颖莎“内心非常干净,性格不纠结”的评价
- 新骊威好还是老骊威好_新骊威
- 绝地求生怎样导出截图,截图保存在哪
- 嫦娥四号首登月球背面_中国“嫦娥四号”着陆成功首度披露月球背面图片
- 索尼W220,(SONY)索尼W220报价、参数、图片、怎么样
- 中国可以不参加东京奥运会吗现在,中国可以不参加东京奥运会吗
- 中国知网论文查重系统,中国知网论文查重
- 日文的之 の和的 の有区别吗
- 孩子最怕的六件事,很多父母都不知道
- dnf95套怎么升级100,DNF95A+套怎么升级成95B套
- 苏运莹,中国内地女歌手,代表作《野子》
- 指路标志与指示标志图片,指路标志与指示标志是什么
- 中韩奥运足球文章 CCTV5现场文章苏迪曼杯中韩大战,与丹麦比赛暴露的问题令人堪忧
- 怎样用百度网盘下载链接,如何利用百度网盘下载链接文件
- 北京社保卡丢失怎么办,社保卡丢失怎么办
- vivo手机怎样截屏,手机怎样截屏
- 奔驰gle怎么样_奔驰cla怎么样
- 电阻丝是什么(电阻丝规格参数表)
- 电脑桌面怎么弄动态壁纸,桌面动态壁纸怎么弄
- 奥运会乒乓球比赛几局几胜制,奥运会乒乓球几局几胜制