11 The Memory Hierarchy(存储器层次结构)

存储器系统玮CPU存放指令和数据。再简单的模型中,存储器系统是一个线性的字节数组,而CPU能够在一个常数时间内访问每一个存储器位置。

存储器系统

  • 存储器系统是一个具有不同容量、成本和访问时间的存储设备的层次结构。
  • CPU(中央处理器)寄存器保存着最常用的数据
  • 靠近CPU的小的、快速的高速缓存存储器作为一部分存储在相对慢速的主存储器中数据和指
    令的缓冲区域
  • 主存缓存存储在容量较大的、慢速磁盘上的数据。
  • 磁盘常常作为存储在通过网格连接的其他机器的磁盘或磁带上的数据的缓冲区域
    在这里插入图片描述

存储器层次结构是指计算机系统中不同速度和容量的存储器单元被组织成一系列层次,每一层都有其特定的容量、速度和成本特性。 存储器层次结构从下到上通常包括以下层次:
(1)较慢但容量大的辅助存储器(如硬盘、光盘、闪存等):容量大,成本低,但访问速度慢。
(2)较快但容量小的主存储器(如DRAM):速度快,但容量较小。
(3)更快但容量更小的缓存存储器(如CPU缓存):速度更快,但容量更小。
存储器层次结构中的每一层都会存储在其下一层次中使用的数据和指令的副本,以便更快地访问。通过层次结构,计算机系统能够最大程度地利用不同存储器单元的优点,同时最小化存储器成本和延迟。

硬盘
硬盘是计算机中的一种重要的辅助存储设备,其主要作用是用于存储计算机系统的操作系统、应用程序、数据文件以及其他文件等信息。与主存储器(RAM)相比,硬盘具有更大的存储容量和更长的数据保存时间,可以保存大量的数据,并长期保持其存储状态,即使计算机关闭也不会丢失数据。

硬盘内部的存储介质通常是一个或多个盘片,每个盘片都覆盖着一层磁性材料,用于存储二进制数据。硬盘通过机械臂和读写头来读取和写入数据,这些部件能够在盘片上移动和精确定位,以访问和操作不同位置的数据。

除了作为计算机系统的主要存储设备之外,硬盘还可以用于备份重要数据,以防数据丢失或损坏。此外,硬盘还可以用于扩展计算机系统的存储容量,使用户可以存储更多的数据。

总线决定了 硬盘的传输速度的上限

主存储器
主存储器:与cpu直接交换数据的叫主存

主存储器与CPU之间的连接:通过数据总线、地址总线、控制总线
CPU访问存储器的过程可以分为以下几个步骤:

(1)指令寻址:CPU通过指令计数器(Instruction Pointer)来确定下一条要执行的指令的地址。

(2)地址传输:CPU将指令中的地址传输到存储器的地址总线上,告诉存储器要读取或写入哪个存储(单元。

(3)存储器响应:存储器接收到地址信号后,检索或写入相应的数据并将其返回给CPU。

(4)数据传输:CPU将从存储器读取或写入的数据通过数据总线传输。

(5)数据处理:CPU对从存储器读取的数据进行处理,并将结果存储回存储器中。

这个过程中,CPU与存储器之间通过地址总线、数据总线和控制总线进行通信,地址总线传输地址信号,数据总线传输数据,控制总线传输控制信号。CPU和存储器之间的通信速度和带宽受到许多因素的影响,包括存储器的类型、容量、时钟频率以及总线带宽等。因此,计算机系统的性能很大程度上取决于存储器的性能。

寄存器
分为 cpu内部寄存器、cpu外部寄存器
cpu内部寄存器:用于暂时存放参与运算的数据和运算结果
cpu外部寄存器:外设寄存器,在外设里,cpu与其通信从而控制外设的运行

在计算机中,寄存器是一种非常快速的内存储器,用于存储CPU(中央处理器)需要频繁访问的数据。寄存器通常被实现为CPU内部的硬件电路,可以快速地存储和读取数据。
与其他内存储器(如RAM或硬盘驱动器)不同,寄存器的容量非常有限,通常只能存储几个字节或几个位。因此,寄存器只能用于存储对于CPU非常重要的数据,例如计算过程中的中间结果、函数调用时的返回地址和函数参数等。
在计算机中,不同类型的寄存器用于不同的目的。例如,通用寄存器用于存储整数数据,浮点寄存器用于存储浮点数数据,状态寄存器用于存储有关CPU状态的信息(例如,是否发生了某个错误或中断),等等。寄存器的数量和类型因CPU架构而异,但它们在CPU的运行中扮演了至关重要的角色。

工作原理

寄存器是计算机中非常快速的存储器件,它们可以直接集成在CPU芯片内部,也可以作为单独的芯片与CPU连接。寄存器的工作原理与其他存储器件类似,都是将二进制数据存储在电路中的电容、电感或晶体管等元件中。
寄存器的工作原理包括以下几个方面:
(1)寄存器的存储单元:寄存器被划分为多个存储单元,每个存储单元能够存储一个固定大小的数据。例如,在一个32位CPU中,通用寄存器就被划分为32个存储单元,每个存储单元能够存储一个32位的二进制数值。
(2)寄存器的读写操作:CPU可以向寄存器中写入数据,也可以从寄存器中读取数据。当CPU需要向寄存器中写入数据时,它会将数据的二进制表示送入寄存器的输入端,然后控制电路使得数据被存储在指定的存储单元中。当CPU需要从寄存器中读取数据时,它会将寄存器中指定存储单元的数据读出,并送到CPU内部的其他电路中进行处理。
(3)寄存器的时钟控制:为了使CPU和寄存器之间的数据传输同步,通常需要一个时钟信号控制寄存器的读写操作。时钟信号指示了CPU和寄存器之间的操作时序,使得数据的读写能够在正确的时间点上进行。
(4)寄存器的读写速度:寄存器是计算机中读写速度最快的存储器件,其读写速度甚至可以达到每秒上亿次。这使得寄存器能够存储那些需要频繁读写的数据,例如程序计数器、堆栈指针、函数参数等。

寄存器的作用

寄存器在计算机中扮演着非常重要的角色,其主要作用如下:
(1)存储运算结果和中间值:计算机中的算术逻辑单元(ALU)执行运算时需要使用寄存器来存储运算结果和中间值,例如加法、减法、乘法、除法等操作。这些寄存器可以快速地读取和写入数据,从而提高了运算速度。
(2)存储程序计数器:程序计数器(Program Counter)是一个指向当前正在执行的指令地址的寄存器。当计算机执行程序时,程序计数器不断更新以指向下一个要执行的指令的地址,从而实现程序的顺序执行。
(3)存储函数参数和返回值:在函数调用时,函数的参数和返回值需要存储在寄存器中。寄存器能够快速地存取数据,因此可以提高函数调用的效率。
(4)存储堆栈指针:堆栈指针(Stack Pointer)是一个指向堆栈顶部的寄存器,用于存储函数调用时的局部变量和其他临时数据。当函数调用结束时,堆栈指针指向堆栈顶部的下一个空闲位置。
(5)存储状态信息:状态寄存器用于存储有关CPU状态的信息,例如进位标志、零标志、溢出标志、中断标志等。这些标志位可以指示CPU是否需要执行某些特定的操作。
总之,寄存器是计算机中最快速、最常用的存储器件之一,可以存储一些关键的数据,使得CPU能够高效地进行运算和处理数据。

高速缓存器
是什么?

高速缓存器是一种计算机存储器,用于存储在计算机程序执行过程中经常访问的数据和指令。它通常位于计算机的主存储器和中央处理器(CPU)之间,以便更快地访问所需数据,从而提高计算机的运行速度。
高速缓存器分为多级,其中一级缓存(L1缓存)位于CPU内部,速度最快,但容量较小,一般为几百KB或几MB。二级缓存(L2缓存)位于CPU和主存储器之间,速度略慢但容量较大,通常为几十MB到几百MB不等。还有一些计算机系统具有第三级缓存(L3缓存)和更高级别的缓存,容量更大,但速度会逐渐降低。
高速缓存器通过缓存算法和数据替换策略来提高计算机的性能。常见的缓存算法包括直接映射、组相连、全相连等。数据替换策略包括最近最少使用(LRU)、先进先出(FIFO)等。这些算法和策略的选择将影响高速缓存器的效率和性能。

为什么这些算法能够影响高速缓存器的效率和性能?

缓存算法和数据替换策略的选择会直接影响高速缓存器的效率和性能,因为它们会决定缓存器如何存储和替换数据。
缓存算法的选择会影响缓存器的命中率。命中率是指在缓存器中找到所需数据的概率,命中率越高,缓存器的效率就越高。直接映射算法是最简单的缓存算法,但它的命中率较低,因为同一索引位置的多个数据可能会被映射到同一个缓存块中,导致冲突。相连组和全相连组算法可以减少冲突,提高命中率,但也会增加复杂性和成本。
数据替换策略的选择会影响缓存器的性能。当缓存器已满时,需要替换一些数据来腾出空间。替换策略的目标是选择最少使用的数据进行替换,从而最大化缓存器的命中率。LRU算法是最常用的替换策略,它会选择最近最少使用的数据进行替换。但LRU算法需要维护每个数据块的访问时间戳,增加了缓存器的复杂性和成本。FIFO算法是另一种替换策略,它选择最早被缓存的数据进行替换,但可能会导致较低的命中率。
因此,缓存算法和数据替换策略的选择需要权衡效率、性能和成本等因素,以满足不同应用场景的需求。

寄存器的工作原理:

寄存器是计算机中最快速的存储器件之一,通常用于存储CPU进行计算操作时需要的数据、指令和状态信息等。
寄存器的工作原理如下:
(1)寄存器通常是CPU内部的硬件电路,位于CPU核心部件的最靠近的位置,以便快速访问。
(2)寄存器的存储单元通常采用触发器电路,每个触发器可以存储一个比特位(0或1)的数据。
(3)CPU可以通过地址总线和控制总线将寄存器的地址和读写控制信号发送给寄存器,控制寄存器读取或写入数据。
(4)当CPU需要将数据存储到寄存器中时,数据被送入寄存器的输入端,并通过控制信号被存储在触发器中。
(5)当CPU需要从寄存器中读取数据时,控制信号被发送给寄存器的输出端,将数据从触发器中读出,并通过数据总线返回给CPU。
由于寄存器是CPU内部的存储器,读写速度非常快,可以在CPU的时钟周期内完成读写操作。这使得寄存器成为了计算机中最重要的存储器件之一,用于优化计算机的性能,提高指令执行的效率和速度。

硬盘结构详细解释

  • 磁盘:磁盘(Disk)是一种存储设备,通常由一组磁性盘片组成,用于在计算机系统中存储数据和程序。它通常由控制器、主轴电机、磁头、读写电路、数据接口等部件组成,可以实现快速的读写操作。
  • 磁道:磁道(Track)是磁盘表面上的一个圆形轨道,每个磁道可以存储一定量的数据。磁盘的表面通常被划分成多个同心圆的磁道,数据以磁道为单位存储在磁盘上。磁道的数量和大小决定了磁盘的存储容量和性能。
  • 扇区:扇区(Sector)是磁盘表面上每个磁道上的一个弧形区域,用于存储数据和元数据。每个扇区都由一个唯一的扇区号来标识,通常为一个整数。扇区是磁盘数据存储的最小单位,通常大小为512字节或4KB。扇区的数量和大小决定了磁盘的存储容量和性能。

在读写操作时,磁头会定位到指定的磁道和扇区位置,读取或写入数据。因为磁头需要在磁盘表面上移动,所以磁盘的读写速度相对于其他存储设备较慢,但磁盘具有较大的存储容量和相对低的成本,被广泛应用于计算机系统中。

  • 磁盘容量的计算:磁盘容量的计算是根据磁盘的物理特性和文件系统的管理方式来确定的。一般而言,磁盘容量可以通过以下两种方式计算:

物理容量计算法:
磁盘的物理容量是指磁盘中可以存储的最大数据量。磁盘的物理容量由磁盘表面上的磁道数、每个磁道的扇区数和每个扇区的字节数来确定。通常磁盘容量的计算公式为:

磁盘容量 = 磁道数 × 扇区数 × 每个扇区的字节数

例如,一个磁盘有1000个磁道,每个磁道有10个扇区,每个扇区的字节数为512,则该磁盘的容量为:

磁盘容量 = 1000 × 10 × 512 = 5,120,000 字节 = 5 MB
逻辑容量计算法:
磁盘的逻辑容量是指磁盘中可以被文件系统使用的存储容量,它受到文件系统的管理方式、磁盘格式化方式和磁盘空间的利用效率等因素的影响。通常,磁盘的逻辑容量可以通过查看磁盘属性或使用磁盘管理工具来获取。

需要注意的是,由于文件系统在磁盘上存储文件时会占用一定的空间,因此磁盘的实际可用容量通常比逻辑容量要小一些。此外,不同操作系统和文件系统对磁盘容量的计算方法可能有所不同。

  • 磁盘容量的影响因素:
    (1)磁道密度:指单位长度内磁盘上可存储的磁道数。磁道密度越大,磁盘容量越大。
    (2)记录密度:指单位长度内磁道上可存储的记录数。记录密度越大,磁盘容量就越大
    (3)面密度:指磁盘的双面上可以存储的最大数据量。面密度越大,磁盘容量就越大
    (4)磁盘尺寸:磁盘的物理尺寸越大,磁盘容量就越大
    (5)磁盘技术:不同的磁盘技术对容量的限制不同。随着技术的发展,磁盘容量也在不断增加。

  • 磁盘操作:指计算机系统中对磁盘进行读取和写入数据的过程。磁盘操作通常涉及到磁盘旋转和磁头磁臂的移动。

  • 磁盘旋转:磁盘旋转是指磁盘转动的过程,使得磁盘上的数据位逐一经过磁头。磁盘旋转的速度通常以每分钟转数(RPM)来表示。现代硬盘的旋转速度通常在5400RPM到15000RPM之间,高速磁盘的数据读写速度更快,但是也会消耗更多的电能。

  • 磁臂移动:磁臂移动是指磁头移动到磁盘的不同磁道上,以读取或写入数据。磁盘的磁头是由磁臂悬挂在上面的,磁臂可以在磁盘上水平移动,使得磁头可以访问到不同磁道上的数据。现代硬盘通常采用电动的磁头位置调整系统,能够快速定位到指定的磁道位置。磁臂移动的速度通常用寻道时间来表示,即从一个磁道移动到相邻磁道所需的时间。现代硬盘的寻道时间通常在3ms到20ms之间。

  • 在进行磁盘操作时,计算机系统需要通过控制器和驱动器来控制磁盘的旋转和磁头的移动。磁盘操作的速度和效率对计算机系统的性能有着重要的影响。因此,在进行磁盘操作时,需要注意优化磁盘访问的方式,以提高磁盘访问的速度和效率。

  • 磁盘的读入操作:磁盘的读入操作是指从磁盘中读取数据的过程,它包括寻找磁头所需的时间、等待磁盘旋转到正确的扇区位置、以及从磁盘读取数据的时间。

  • 访问时间:指从发出读取请求到实际读取数据所需的时间,它包括寻道时间、旋转延迟时间和数据传输时间。

  • 寻道时间:磁盘的磁头是由磁臂悬挂在上面的,磁臂可以在磁盘上水平移动,使得磁头可以访问到不同磁道上的数据。现代硬盘通常采用电动的磁头位置调整系统,能够快速定位到指定的磁道位置。磁臂移动的速度通常用寻道时间来表示,即从一个磁道移动到相邻磁道所需的时间。现代硬盘的寻道时间通常在3ms到20ms之间,随着磁头移动跨度的增大,寻道时间也会增加。

  • 旋转时间:旋转时间是指磁盘旋转到所需扇区的位置所需的时间。现代硬盘的旋转速度通常在5400RPM到15000RPM之间,高速磁盘的数据读写速度更快,但也会消耗更多的电能。因此,高速磁盘在高负载的情况下容易过热,需要额外的散热装置。

  • 磁盘的访问时间是影响磁盘读写性能的重要指标,它受到寻道时间、旋转时间和数据传输时间等因素的影响。优化磁盘的访问方式可以提高磁盘读写性能,从而提高计算机系统的整体性能。

  • 逻辑磁盘:逻辑磁盘是指由操作系统创建并使用的抽象磁盘,它是基于物理磁盘或磁盘阵列等存储设备构建的。在逻辑磁盘的抽象层面上,操作系统可以将磁盘分割成多个分区,每个分区可以独立格式化并安装不同的文件系统,以实现文件存储和管理。操作系统也可以将多个物理磁盘组合成一个逻辑磁盘阵列,以提高磁盘的容量、性能和可靠性。

  • 备用柱面:备用柱面可以提高磁盘的可靠性,减少数据损失的风险。备用柱面的数量通常与磁盘容量成比例,而且随着磁盘的容量增加,备用柱面的数量也会相应增加。在磁盘的使用寿命过程中,备用柱面可能会被使用多次,因此,当备用柱面的数量减少时,磁盘的可靠性也会降低,需要更频繁地备份数据,以避免数据丢失。

总线

IO总线

  • 是什么?

IO总线是计算机系统中连接CPU、内存和外部设备的数据传输通道,它负责传输输入/输出(I/O)操作所涉及的数据和控制信号。IO总线通常是一组物理电路,由多个信号线和控制线组成。这些线路用于传输数据、地址、控制信号、时钟等信息。

  • 工作原理?

IO总线的工作原理是将I/O操作的命令和数据从CPU发送到外部设备,或者将外部设备的响应数据传送回CPU。在计算机系统中,IO总线通常使用DMA(直接内存访问)技术来加快数据传输速度。DMA技术允许外设直接访问系统内存,从而避免了CPU的干预,提高了数据传输效率。

  • 作用?

IO总线的作用是连接计算机系统中的各个组件,实现CPU和外部设备之间的数据传输。它是计算机系统中重要的组成部分,能够帮助计算机系统实现多种输入/输出操作,例如打印、读写硬盘等。IO总线的性能和数据传输速度对计算机系统的整体性能和响应速度有重要影响,因此,在设计计算机系统时,需要根据系统需求和性能要求选择适当的IO总线类型和传输技术。

bus总线

  • 是什么?

Bus总线是一种计算机系统中常用的数据传输通道,用于连接计算机系统中的各种组件,例如CPU、内存、I/O设备等。它是一组用于传输数据、地址和控制信号的线路集合,用于在不同组件之间传输信息。在计算机系统中,Bus总线通常按照传输数据的位宽分为8位、16位、32位和64位等不同的类型。数据位宽越大,数据传输速度越快,但同时也需要更多的线路和硬件支持。

  • 工作原理?

Bus总线的工作原理是由发送方发送一条数据,然后通过总线将这条数据传输给接收方。总线的控制器(例如芯片组或控制器芯片)负责对总线进行控制,以便让不同的硬件组件协调工作并共享总线。

  • 作用是?

Bus总线的作用是使不同的硬件组件能够共享数据和指令。通过Bus总线,硬件组件可以将它们的数据和指令传输给其他组件,以实现各种计算和操作。同时,Bus总线还可以支持多个硬件组件同时访问同一数据线,从而提高了系统的并发性能。

总的来说,Bus总线是计算机系统中重要的组成部分,它连接了计算机系统中的各种硬件组件,使它们能够协同工作并共享数据。在计算机系统设计和优化中,选择适当的Bus总线类型和传输技术,能够大大提高系统的性能和响应速度。

CPU访问磁盘发生的步骤

  • CPU通过总线发送磁盘访问请求,请求包括读写指令、访问的磁盘号、扇区号、磁头号等信息。
  • 磁盘控制器接收到CPU的访问请求后,会将请求转换为磁盘的物理操作,包括磁头寻道、磁头定位、磁盘旋转等操作。其中,磁头寻道和磁头定位是磁盘访问的主要时间开销。
  • 当磁头寻道和磁头定位完成后,磁盘控制器开始从磁盘上读取或写入数据。在读取数据时,磁盘控制器会将数据读入磁盘缓存中,并通过总线传输给CPU。在写入数据时,CPU会将要写入的数据发送到磁盘控制器,磁盘控制器将数据写入磁盘缓存中,并在必要时刷新到磁盘中。
  • 当磁盘控制器完成数据读取或写入后,会向CPU发送完成信号,并将数据通过总线传输给CPU。CPU在接收到数据后,可以继续执行下一条指令。

总的来说,CPU访问磁盘需要经过许多步骤,包括磁头寻道、磁头定位、数据读取和数据写入等操作。这些操作都需要花费一定的时间,因此磁盘访问通常是计算机系统中的瓶颈之一。为了提高磁盘访问性能,可以采用多种技术,例如磁盘阵列、缓存技术、数据压缩和快速访问方式等。

单核与双核CPU

  • 单核和双核都是中央处理器(CPU)的术语,表示处理器的核心数。单核处理器只有一个核心,而双核处理器有两个核心。每个核心都有自己的控制逻辑、缓存、执行单元等,可以同时执行多个任务,提高处理器的整体性能和效率。

  • 具体来说,单核处理器只能执行一个任务,每个时刻只能执行一个指令,需要等待上一个指令执行完成后才能执行下一个指令。而双核处理器可以同时执行两个任务,每个核心都能够独立地执行指令,从而大大提高了处理器的性能和响应速度。

举个例子,如果您在使用电脑时同时运行多个程序(如打开多个浏览器窗口、同时编辑文档等),如果使用单核处理器,系统会变得缓慢,因为处理器需要等待每个程序的指令执行完才能执行下一个程序的指令;但如果使用双核处理器,则每个核心可以独立地执行一个程序,因此系统会更加流畅。
需要注意的是,处理器核心数不是处理器性能的唯一指标,还受到处理器架构、频率、缓存等因素的影响。不同的应用程序和任务对处理器的性能要求也不同,因此在选择处理器时需要综合考虑多个因素。

弥合cpu和内存之间差距的关键

时间局部性(Temporal Locality)和空间局部性(Spatial Locality)是计算机科学中的两个重要概念,用于描述程序访问内存时的模式和规律是弥合CPU和内存之间差距的关键。

  • 时间局部性指的是一个数据项在某个时间点被访问后,在未来的一段时间内很可能会再次被访问。例如,一个程序在遍历数组时,会对同一块内存进行多次访问,因此这些内存数据就具有时间局部性。这种访问模式使得CPU可以在缓存中暂存这些数据,避免了频繁地从内存中读取数据,从而提高了程序的执行效率。

  • 空间局部性指的是一个数据项在被访问时,其附近的数据项也很可能会被访问到。例如,一个程序在遍历二维数组时,会对相邻的内存块进行多次访问,因此这些内存数据就具有空间局部性。这种访问模式使得CPU可以预先把附近的数据读取到缓存中,减少了从内存中读取数据的次数,从而提高了程序的执行效率。

作用:

时间局部性和空间局部性都能够利用CPU中的缓存,提高程序的执行效率。因此,在编写程序时,应该尽量利用时间局部性和空间局部性的特性,减少对内存的频繁访问。此外,CPU的缓存大小、缓存策略等因素也会影响时间局部性和空间局部性的效果,需要进行合理的调整和优化。

SRAM 和 DRAM

  • SRAM(Static Random Access Memory),静态随机存取存储器,是一种使用触发器作为存储单元的存储器。SRAM具有快速的访问速度,能够很快地读取和写入数据,且读取时不需要刷新。SRAM的缺点是相比于DRAM体积更大、价格更高,同时它也不如DRAM集成度高。
  • DRAM(Dynamic Random Access Memory),动态随机存取存储器,是一种使用电容作为存储单元的存储器。DRAM的优点是集成度高,因此体积较小、价格较低。DRAM的缺点是需要刷新,以防止存储单元中的电荷漏失。DRAM的访问速度较慢,写入和读取数据时需要一定的时间。
  • 对比:

(1)SRAM和DRAM的存储单元不同,SRAM使用触发器作为存储单元,而DRAM使用电容作为存储单元。
(2)SRAM的访问速度快,读取和写入数据时不需要刷新,而DRAM的访问速度较慢,需要定期刷新存储单元中的电荷。
(3)SRAM的价格相对较高,集成度低,因此体积较大,而DRAM的价格相对较低,集成度高,因此体积较小。
(4)SRAM和DRAM应用领域不同。SRAM通常用于需要快速读取和写入数据的场合,例如高速缓存、寄存器和其他需要快速访问的存储器;而DRAM通常用于存储大量数据的场合,例如主存储器。
总的来说,SRAM和DRAM各有优缺点,适用于不同的应用场合。在计算机系统中,通常会根据需要选择合适的存储器类型,以实现最佳的性能和成本效益。

ROM

是什么?

ROM(Read-Only Memory)是只读存储器的缩写,指的是一种在出厂时被编程的、不能被修改的存储器。与RAM(Random Access Memory)相比,ROM的主要特点是只能读取其中存储的数据,不能写入或修改其中的内容。

工作原理?

ROM通常用于存储不会随着时间变化而改变的数据,例如固件、操作系统、引导程序等。由于这些数据不需要频繁地修改,因此使用ROM存储可以保证其稳定性和可靠性。ROM的另一个特点是在断电或重新启动系统后,其中存储的数据仍然能够被保留,因为其数据是通过物理或化学方法储存的,而不是通过电容或电阻来存储的。

分类:

(1)Mask ROM:掩模ROM是一种在制造过程中被编程的ROM,其数据无法被修改。由于制造时需要制作掩膜,因此制造成本较高,但存储密度和稳定性较高。
(2)PROM(Programmable Read-Only Memory):可编程ROM可以在制造后通过专用设备或编程器进行编程,将数据写入其中,但一旦被编程后就无法再次修改。由于制造后可在现场编程,因此成本较低,但数据的存储密度和稳定性较低。
(3)EPROM(Erasable Programmable Read-Only Memory):可擦除可编程ROM可以通过特定的设备或方法擦除其中的数据,然后重新编程。EPROM的优点是可以重复使用,但由于需要专门的擦除设备,因此使用较为不便。
(4)EEPROM(Electrically Erasable Programmable Read-Only Memory):电可擦除可编程ROM与EPROM类似,但可以通过电子信号进行擦除和编程,因此使用较为方便。
总的来说,ROM是一种只读存储器,适用于存储稳定的、不需要频繁修改的数据。不同类型的ROM有着不同的特点和适用范围,使用时需要根据需要进行选择。

DMA

是什么?

DMA(Direct Memory Access,直接内存访问)传送是指设备(如磁盘控制器、网卡等)直接通过DMA控制器访问内存,而不需要CPU的干预。

工作原理?

(1)外设向DMA控制器请求DMA传送,包括目标内存地址、传送长度等信息。
(2)DMA控制器向CPU发送中断请求,请求CPU停止对总线的控制权,以便DMA控制器能够访问内存。
(3)CPU响应中断请求,释放总线控制权,并将DMA传送的控制权交给DMA控制器。
(4)DMA控制器通过总线直接访问内存,将数据传送到目标内存地址。
(5)传送完成后,DMA控制器向CPU发送中断请求,通知传送完成,并将总线控制权交还给CPU。

作用是?

磁盘传送数据到内存时,通常采用DMA传送方式,因为数据量较大,而CPU的处理能力有限,如果每个字节的数据都需要经过CPU的干预,将会显著影响系统的性能。使用DMA传送,可以将传送数据的控制权交给DMA控制器,让其直接访问内存,减轻CPU的负担,提高数据传送效率。同时,由于DMA控制器能够在数据传送过程中直接访问内存,因此不需要经过CPU来完成地址转换和数据复制等操作,也能够提高数据传送的效率。

DMA与CPU、内存的关系?

内存是指计算机用于存储程序和数据的存储设备,通常是指主存储器(Main Memory),也就是位于计算机主板上的存储芯片组件,它与CPU通过地址总线、数据总线和控制总线相连。CPU可以通过访问主存储器来读取或写入程序和数据,但是,在访问外部设备(如磁盘、网卡等)时,CPU需要通过IO接口来和设备进行通信,数据的传送需要经过IO接口和主存储器,因此不能完全避免CPU的干预。

DMA传送是一种特殊的数据传送方式,通过将数据传送的控制权交给DMA控制器,让其直接访问内存,从而减轻CPU的负担,提高数据传送效率。但是,DMA传送并不是所有数据传送的方式,对于一些需要经过CPU处理的操作(如加密解密等),仍然需要CPU的干预。同时,DMA传送也需要CPU的初始化和管理,以及处理传送完成后的中断请求等。因此,虽然DMA传送能够减轻CPU的负担,但并不意味着数据传送完全不经过CPU。

固态硬盘

是什么?

固态硬盘(Solid State Drive,SSD)是一种使用非易失性存储器(如闪存)来实现数据存储的存储设备,它与传统的机械硬盘相比,具有更高的数据传输速度、更低的能耗、更好的耐用性和更小的体积等优点。它被广泛应用于个人电脑、服务器、工业控制等领域。

工作原理?

固态硬盘的工作原理是通过电子信号来读取和写入数据,它由控制器芯片和存储芯片组成,控制器芯片主要负责控制读写操作,存储芯片则负责实际存储数据。在固态硬盘中,数据被存储在闪存芯片中,每个闪存芯片包含了一定数量的存储单元,每个存储单元可以存储一个二进制数据位(0或1),由多个存储单元组成的存储单元组成一个字节(8个二进制位),由多个字节组成的存储单元称为一个扇区(通常为512字节或4KB)。固态硬盘的控制器芯片通过传输数据信号来控制存储芯片的读写操作,实现数据的存储和读取。

作用:

固态硬盘的作用是用于存储和读取数据,可以替代传统的机械硬盘作为计算机的主存储器,也可以作为辅助存储器使用。

与传统机械磁盘相比

与传统的机械硬盘相比,固态硬盘的读写速度更快,因为它不需要机械部件进行读写操作,而是直接使用电子信号进行控制,因此具有更低的访问延迟和更高的数据传输速度。同时,固态硬盘也更加耐用,因为它没有机械部件,也不会受到震动和碰撞的影响,具有更好的可靠性和稳定性。

机械磁盘则更适合需要大容量存储和顺序读写的场景,如大型数据库、媒体存储和备份等。尽管磁盘容量已经很大,但在需要高速数据传输的场合,固态硬盘的优势更加明显。

因此,在实际应用中,根据具体的需求和应用场景,可以根据不同的需求选择旋转磁盘或固态硬盘。

闪存的相关概念

闪存翻译层(FTL)、块(Block)和页(Page)是闪存存储器中的重要概念。

  • 固态硬盘中的闪存存储器是按块和页进行划分的。块是闪存中最小的可擦写单元,通常是几十到几百个页的大小。页是块的子单元,通常是几KB到几十KB的大小。
  • 闪存翻译层(FTL)是固态硬盘中的一个重要组成部分,其作用是将逻辑地址转换为物理地址,管理闪存块的使用和垃圾回收等功能。FTL通过将逻辑块映射到物理块来实现逻辑地址到物理地址的转换,并且会记录闪存块的使用情况和擦写次数,以实现均衡使用和延长寿命。
  • 当操作系统需要写入数据时,闪存翻译层会首先检查空闲的块,然后将数据写入块的一页中。当该块的所有页都被写满时,该块就被标记为已满,不能再写入新的数据。当操作系统需要读取数据时,FTL会根据逻辑地址映射到对应的物理地址,然后从闪存中读取相应的数据。
  • 由于闪存存储器的特殊性质,如擦写次数有限、擦写速度慢等,FTL会进行块的擦除和垃圾回收等操作,以确保闪存存储器的可靠性和性能。

缓存

是什么?

缓存是一种计算机存储技术,它用于临时存储经常访问或近期访问的数据,以便在下次访问时能够快速获取。缓存的主要目的是 提高数据访问的速度和效率,从而提高计算机的性能

缓存是一个较小但访问速度更快的存储空间,通常位于计算机处理器(CPU)附近。缓存中的数据是对主存储器(如RAM)中的一部分数据的副本。当计算器需要访问某个数据时,他会首先检查缓存中是否存在该数据,如果缓存中存在该数据(缓存命中),则该计算机将直接从缓存读取数据,节省访问主存器的时间。如果缓存中不存在该数据(缓存未命中),则计算机需要从主存储器中读取数据。

缓存技术被广泛应用于各种场景,如CPU高速缓存、硬盘缓存、Web缓存、数据库缓存和内容分发网络(CDN)等。在这些应用中,缓存都起到了减少数据访问延迟、降低系统负载、提高响应速度的作用。

工作原理?

缓存的工作原理是利用局部性将经常访问或近期访问的数据临时存储在一个较小但访问速度更快的存储空间中。局部性原理包括时间局部性和空间局部性。时间局部性是指被访问过的数据在未来很可能会再次被访问,而空间局部性是指被访问的数据附近的数据很可能也会被访问。

步骤如下:

  • 请求数据:计算机需要访问某个数据时,首先会检查缓存中是否存在该数据
  • 查询缓存:计算机在缓存中查找请求的数据。缓存通常位于计算机处理器(CPU)附近,访问速度比主存储器(如RAM)更快。
  • 命中或未命中:如果缓存中存在所请求的数据(称为“缓存命中”),计算机将直接从缓存中读取数据,节省了访问主存储器的时间。如果缓存中不存在所请求的数据(称为“缓存未命中”),计算机将从主存储器中读取数据,并将数据存入缓存以备后续访问。
  • 替换策略:当缓存已满,但需要将新数据添加到缓存时,缓存管理器需要根据替换策略来决定哪些数据该保留,哪些数据应该被替换。常见的替换策略有最近最少使用(LRU)、最不经常使用(LFU)和先进先出(FIFO)等

通过以上步骤,缓存技术可以显著减少数据访问的延迟,提高计算机的性能

cpu通过硬件来访问

CPU(中央处理器)通过与其他计算机硬件组件进行通信和协作,执行指令并访问数据。
以下是CPU与其他硬件组件的通信方式:

1.系统总线(System Bus):CPU通过系统总线与其他硬件组件进行通信。系统总线由数据总线、地址总线和控制总线组成。数据总线用于在CPU、内存和其他设备之间传输数据;地址总线用于传输数据或指令的内存地址;控制总线用于在CPU和其他组件之间发送控制信号。
2.内存(Memory):CPU通过内存访问数据和指令。内存主要包括RAM(随机存取存储器)和ROM(只读存储器)。CPU通过地址总线发送内存地址,通过数据总线读取或写入数据,通过控制总线发送读取或写入操作的控制信号。
3.缓存(Cache):CPU通过访问缓存来加速对数据和指令的访问。缓存通常分为三级:L1、L2和L3缓存。L1和L2缓存位于CPU内部,而L3缓存位于CPU外部,但与CPU封装在同一芯片上。CPU通过内部总线访问缓存,这使得访问速度更快。
4.输入 / 输出(I/O)设备:CPU通过I/O总线和I/O控制器与输入/输出设备(如键盘、鼠标、显示器、硬盘等)通信。I/O控制器将设备的数据转换成CPU可以理解的格式,并在CPU和设备之间进行数据传输。
5.芯片组:芯片组是一组集成电路,它协调和控制计算机系统中各个组件之间的数据传输。主要包括北桥和南桥。北桥负责协调高速数据通信,例如CPU与内存和显卡之间的通信;南桥负责协调低速数据通信,例如CPU与硬盘、USB设备和其他外围设备之间的通信。

通过这些硬件组合的协作,CPU可以执行指令、访问数据,并与计算机系统中的其他组件进行通信。

内存分块

是什么?

内存分块(Memory Block)是计算机内存管理的一种概念,它指的是将计算机内存(通常指RAM)划分为多个连续的、大小相等或不等的区域。内存分块有助于更有效地组织和管理内存资源,同时降低内存碎片化和浪费的问题。

目的:内存分块主要用于分配和回收内存空间。当程序需要内存空间时,操作系统会在可用的内存块中查找合适的空间并分配给程序;当程序不再需要内存空间时,操作系统会回收并释放内存块,以便其他程序使用。

**内存的管理方式:**根据内存管理方式的不同,内存分块可以分为固定分区、动态分区和分页/分段等。
+ 固定分区:内存被划分为大小相等或不等的固定分区。每一个分区只能容纳一个程序,这种方式简单易实现,但可能导致内存碎片化和浪费
+ 动态分区:内存被按需动态分配,程序需要多少内存就分配多少内存。这种方式可以更有效地利用内存空间,但分配和回收内存地开销较大
+ 分页/分段:内存被划分为大小相等地页(Page)或不等的段(Segment)。程序的内存空间被映射到多个页或段,这些页或段可以非连续地存储在内存中。这种方式可以有效地降低内存碎片化和浪费,同时支持虚拟内存和内存保护等高级功能。

**内存分配策略:**操作系统在分配内存块时可以采用不同的策略,如最先适应(First Fit)、最佳适应(Best Fit)和最差适应(Worst Fit)等。这些策略影响了内存分配的效率和碎片化程度。

通过内存分块,操作系统可以有更有效地管理内存资源,满足程序的内存需求并降低内存碎片化和浪费。

为什么动态分区分配和回收内存的开销较大?

动态分区内存管理是一种将内存按需动态分配给程序的方法。虽然它可以更有效地利用内存空间,但在分配和回收内存时确实存在较大的开销。
原因如下:

  • 寻找合适的空闲内存块:在动态分区内存管理中,当程序请求内存时,操作系统需要遍历内存空间,找到一个足够大的空闲内存块来满足程序的需求。这个过程可能涉及大量的搜索和比较操作,从而导致较大的时间开销
  • 内存碎片:动态分区容易产生内存碎片,尤其是外部碎片。外部碎片是指因为内存块的大小和位置分布不均匀而导致的无法使用的空闲内存。随着程序的运行和内存的分配与回收,外部碎片可能变得越来越严重,从而导致内存分配速度变慢和内存利用率降低。
  • 内存合并和分割:在动态分区内存管理中,操作系统需要在分配和回收内存时进行内存块的合并和分割。例如,当两个相邻的空闲内存块被回收时,操作系统需要合并它们以减少外部碎片;当一个空闲内存块被分配给程序时,操作系统可能需要将其分割成所需大小。这些操作增加了内存管理的复杂性和开销。
  • 数据结构和算法开销:为了实现动态分区内存管理,操作系统需要维护一些数据结构(如链表或树)来跟踪内存块的状态和位置。同时,操作系统需要实现一些算法(如最先适应、最佳适应或最差适应等)来分配和回收内存。这些数据结构和算法增加了内存管理的开销。

相关术语的解释:

内存复制整个块:
内存复制整个块是指将一段内存区域的数据完整地复制到另一个内存区域。这通常是通过使用内存复制函数(如C语言中的memcpy函数)来实现的。
内存复制整个块通常用于以下情况:
+ 数据备份:将一段内存中的数据复制到另一个内存区域,以备份数据来防止数据丢失
或损坏
+ 数据传输:将一段内存中的数据复制到另一个内存区域,以便数据可以在不同的进
程或系统之间传输。
+ 内存管理:在进行动态内存分配时,可以使用内存复制来将已分配的内存块复制到
新的内存块中,以便更好地管理内存空间。
需要注意的是,在执行内存复制操作时,应确保目标内存区域具有足够的空间来存储源内存
区域中的数据,并且应该谨慎地处理指针和边界条件,以避免内存泄漏和越界访问等问题。

缓存命中与缓存未命中:
缓存是计算机中的一种快速存储器件,用于暂时存储经常访问的数据,以便快速访问。当 CPU 需要读取或写入数据时,会首先查找缓存,如果数据已经存在于缓存中,则称为缓存命中;如果数据不在缓存中,则称为缓存未命中。

缓存命中表示所需数据已经存在于缓存中,因此 CPU 可以直接从缓存中读取或写入数据,而无需从主存储器中获取数据,这样可以加快数据访问速度。缓存命中率表示在一定时间内缓存中所存储的数据与实际访问的数据之间的比率,它是衡量缓存性能的重要指标,通常希望缓存命中率越高越好。

缓存未命中表示所需数据不在缓存中,需要从主存储器中获取数据,这样会引入额外的延迟和开销,导致访问速度变慢。当发生缓存未命中时,系统会尝试将所需数据从主存储器中读取到缓存中,以便下一次访问时可以直接从缓存中读取数据。如果缓存的容量不足或缓存替换算法不当,则可能会导致频繁的缓存未命中,从而降低系统的性能。

冲突未命中:
冲突未命中(Conflict Miss)是一种缓存未命中的类型,指的是由于缓存的实现方式导致缓存中的某些块被多个数据块所共享,从而导致这些数据块之间发生冲突,无法同时缓存在缓存中。在最简单的缓存实现方式中,缓存的大小被分割成多个固定大小的块,每个块可以缓存一部分数据。如果两个或多个数据块被映射到同一个缓存块中,就会发生冲突未命中。
例如,如果缓存的大小为8块,而数据块的地址被映射到缓存时使用的映射函数为 i mod 8,那么具有相同余数的数据块就会映射到同一个缓存块中,从而导致冲突未命中的发生。

为了解决冲突未命中的问题,可以采用更复杂的缓存实现方式,如关联映射(Associative Mapping)或者集合关联映射(Set-Associative Mapping)。在这些实现方式中,数据块可以被映射到多个缓存块中,从而降低冲突未命中的概率,提高缓存的效率和性能。

工作集:
工作集(Working Set)是指一个进程在一段时间内访问的全部页面集合。在操作系统中,一个进程可能需要访问多个页面,而这些页面可能分散在主存储器中的不同位置。工作集可以理解为进程当前所需的全部页面集合,它可以反映出进程的内存访问情况,也是内存管理和页面置换算法的重要参考。

通常来说,操作系统会将进程所需的页面载入内存中,以便进程能够快速访问这些页面,减少访问主存储器的时间和开销。如果进程需要访问的页面数量超过了可用内存的大小,就可能会发生缺页中断或页面置换等问题,导致性能下降。

工作集大小可以用于评估内存使用情况和预测内存需求。如果工作集大小比可用内存大小小,那么进程可以很好地运行,不会发生页面置换等问题;如果工作集大小比可用内存大小大,那么就需要通过调整进程的内存使用方式或者增加可用内存来解决问题。因此,了解工作集的概念和大小对于操作系统的内存管理和性能优化非常重要。

关联映射:
关联映射(Associative Mapping)是一种缓存映射方式,也是高速缓存中最常用的映射方式之一。在关联映射中,缓存中的每一个块可以映射到任意一个数据块,而不像直接映射中那样,每个数据块只能映射到一个固定的缓存块。

具体来说,关联映射的缓存结构中包含两个部分:缓存块数组和标记数组。缓存块数组用于存储数据块,标记数组用于标记哪些缓存块是有效的、哪些缓存块是空的,以及哪些缓存块存储的数据块是哪一个数据块。

在关联映射中,当需要访问一个数据块时,缓存控制器会首先在标记数组中查找有效的缓存块,如果有空的缓存块,则将数据块读入该缓存块中。如果没有空的缓存块,则需要选择一个缓存块来替换,这通常使用一些替换算法来实现,比如最近最少使用(Least Recently Used)算法等。选择一个缓存块替换时,需要考虑哪些缓存块存储的数据块最不常用,然后将该缓存块替换为新的数据块。

关联映射的作用与优点:

  • 减少缓存命中率低的情况。由于缓存块可以映射到任意的数据块,关联映射可以有效地避免直接映射和组相联映射中容量和冲突未命中的问题。在关联映射中,如果一个数据块在缓存中,则可以在任意一个缓存块中找到它,不需要按照固定的映射方式查找。
  • 提高缓存的利用率。由于关联映射中每个缓存块可以映射到任意一个数据块,因此可以更加灵活地利用缓存空间,减少冗余数据的存储。这样可以提高缓存的利用率,使得缓存可以缓存更多的数据块,从而提高了缓存的命中率。
  • 支持更灵活的替换算法。由于关联映射中每个缓存块都可以映射到任意一个数据块,因此在缓存块替换时,可以采用更加灵活的替换算法,如LRU(最近最少使用)算法等。这样可以更好地利用缓存空间,提高缓存的命中率和效率。

关联映射相对于直接映射来说,能够避免冲突未命中的问题,并且可以使用替换算法来优化缓存的效率与命中率。但是,由于需要对每个数据块进行比较,关联映射的硬件实现通常比直接映射更为复杂,而且需要更多的硬件资源,因此成本也更高。

缓存中的每一个块 如何 与 数据块映射:

  • 直接映射:直接映射(Direct Mapping):在直接映射中,缓存中的每一个块都映射到主存储器中的一个唯一的数据块。具体的映射方式是根据主存储器地址的一部分来确定缓存块的位置。例如,如果缓存大小为4个块,主存储器地址为12位,那么可以将主存储器地址的低两位用来确定缓存块的位置,即将主存储器地址模4的余数作为缓存块的索引。
  • 关联映射:在全关联映射中,缓存中的每一个块都可以映射到主存储器中的任意一个数据块。具体的映射方式是通过比较主存储器地址和缓存中所有块的标记(Tag)来确定哪一个块映射到了该数据块。
  • 组关联映射

无论采用哪种映射方式,缓存块和数据块之间的映射关系都需要在缓存控制器中进行维护。当需要访问某个数据块时,缓存控制器会首先根据映射关系来确定数据块是否已经缓存到了缓存中,如果已经缓存,则可以直接访问缓存中的数据块,否则需要从主存储器中读取数据块并将其存储到缓存中。

猜你喜欢

转载自blog.csdn.net/m0_56898461/article/details/129748988