【系统架构设计】计算机组成与体系结构(二)

计算机系统组成

存储器系统

前言

存储器用来存放程序和数据的部件,是一个记忆装置,也是计算机能够实现“存储程序控制”的基础。在计算机系统中,规模较大的存储器往往分成若干级,称为存储器系统。

传统存储器系统一般分为 高速缓冲存储器(Cache)、主存、辅存 三级。

  • 主存:可由CPU直接访问,存取速度快,但容量小,一般用来存放当前正在执行的程序和数据
  • 辅存:在主机外部,存储容量大,价格较低,但存取速度较慢,一般用来存放暂时不参与运行的程序和数据,CPU不可以直接访问辅存,辅存中的程序和数据在需要时才传送到主存,因此它是主存的补充和后援;
  • Cache:存取速度比主存更快,但容量更小,用来存放当前最急需处理的程序和数据,以便快速地向CPU提供指令和数据。

因此,计算机采用多级存储器体系,确保能够获得尽可能高的存取速率,同时保持较低的成本。而多层次存储体系之所以能用低投入换来较高的存取速率,得益于局部性原理

局部性原理是指程序在执行时呈现出局部性规律,即在一较短的时间内,程序的执行仅局限于某个部分。相应地,它所访问的存储空间也仅局限于某个区域。程序局部性包括时间局部性空间局部性

  • 时间局部性:是指程序中的某条指令一旦执行,不久以后该指令可能再次执行。产生时间局部性的典型原因是由于程序中存在着大量的循环操作;
  • 空间局部性:是指一旦程序访问了某个存储单元,不久以后,其附近的存储单元也将被访问,即程序在一段时间内所访问的地址可能集中在一定的范围内,典型情况就是程序顺序执行

存储器中数据常用的存取方式顺序存储、直接存取、随机存取、相联存取四种。

  1. 顺序存取:存储器的数据以记录的形式进行组织,对数据的访问必须按照特定的线性顺序进行。存取时间是固定的磁带存储器采用的就是顺序存取的方式。
  2. 直接存取:使用一个共享的读写装置对所有的数据进行访问,与顺序存取相似。但是,每个数据块都拥有唯一的地址标志,读写装置可以直接移动到目的数据块所在位置进行访问。存取时间也是可变的磁盘存储器采用直接存取的方式。
  3. 随机存取:存储器的每一个可寻址单元都有唯一的地址和读写装置,系统可以在相同的时间内对任意一个存储单元的数据进行访问,而与先前的访问序列无关。存取时间是固定的主存储器采用随机存储的方式。
  4. 相联存取:也是一种随机存取的形式,但是选择某一个单元进行读写是取决于内容而不是其地址。与普通的随机存取方式一样,每个单元都有自己的读写装置,读写时间也是一个常数。使用相联存取方式,可以对所有的存储单元的特定位进行比较,选择符合条件的单元进行访问。为提高地址映射的速度,Cache 采用相联存取的方式

ps: 随机存取和相联存取由于每个单元都有唯一的读写装置,因此存取时间是固定的;顺序存取访问路线是确定的,因此存取时间也是固定的;直接存取由于磁头起始位置不同等因素,存取时间可变。

主存储器

由于CPU 要频繁访问主存,主存的性能在很大程度上影响了整个计算机系统的性能。根据工艺和技术的不同,主存可分为随机存取存储器 和 只读存储器

  1. 随机存取存储器(Random Access Memory,RAM):既可以写入也可以读出,但断电不保存,因此只能用于暂存数据。RAM 又可分为DRAM (Dynamic RAM,动态RAM)和SRAM(Static RAM,静态RAM)两种:
  • DRAM :信息会随时间逐渐消失,因此需要定时对其进行刷新维持信息不丢失;
  • SRAM:在不断电情况下信息能够一直保持而不会丢失

DRAM 密度大于SRAM,且更加便宜,但SRAM速度快,电路简单(不用刷新电路),然而容量小,价格高

  1. 只读存储器(Read Only Memory,ROM):可以看作RAM一种特殊的形式,存储器内容只能随机读出而不能写入。常用来存放那些不需要改变的信息。由于信息一旦写入存储器就固定不变了,即使断电,写入的内容也不会丢失,所以又称为固定存储器。ROM一般用于存放系统程序BIOS(Basic Input Output System,基本输入输出系统)。

存储器存储数量(计算)

不同计算机存储器编址方式不同,主要有字编址和字节编址。内存一般以字节(8位)为单位,或者以字为单位(字的长度可大可小,例如16位或32位)。

例如:内存地址从AC000H 到C7FFFH,则共有C7FFFH-AC000H=1BFFFH个地址单元(转换为十进制为 112KB)。如果该内存地址按字(16bit)编址,则共有112KB * 16 位。假设该内存由28片存储器芯片构成,已知构成此内存的芯片每片有16KB 个存储单元,则该芯片每个存储单元存储(112KB * 16) /(28 * 16KB)=4位

辅助存储器(以磁盘为例)

在这里插入图片描述

硬盘存储器在硬盘中,信息分布呈以下层次:记录面、圆柱面、磁道、扇区

一台硬盘驱动器中有多个磁盘片,每个盘片有2个记录面,每个记录面对应一个磁头,所以记录面号就是磁头号,如图1-2(a)。所有的磁头安装在一个公用的传动设备或支架上,磁头一致地沿盘面径向移动,单个磁头不能单独移动。在记录面上,一条条磁道形成一组同心圆,最外圈的磁道为0号,往内侧磁道号逐渐增加,如图1-2(b)。在一个盘组中,各记录面上相同编号(位置)的各磁道构成一个柱面,如图1-2(c)。

每个磁道片有m个磁道,则该硬盘有m个柱面引入柱面的概念是为了提高硬盘的存储速度。当主机要存入一个较大的文件时,若一条磁道存不完,就需要存放在几条磁道上。这时应该将一个文件尽可能存到同一个柱面上,如果仍存放不完,再存入相邻的柱面内

ps: 同一柱面,磁头不用移动。

通常将一条磁道划分若干段,每段称为一个扇区或扇段,每个扇区存放一个定长信息块。具体怎么划分一般由操作系统决定。磁道上扇区编号从1开始

在磁盘上进行信息读写时,首先需要定位到目标磁道,这个过程称为寻道。寻道消耗时间为寻道时间,定位到目标磁道后,需要定位到目标扇区,此过程通过旋转盘片完成,平均旋转半圈可到目标位置。故磁道访问时间为:
磁盘访问时间(存取时间) = 寻道时间 + 旋转延迟时间

Cache存储器

流水线

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 15:46:03       4 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 15:46:03       5 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 15:46:03       4 阅读
  4. Python语言-面向对象

    2024-07-10 15:46:03       5 阅读

热门阅读

  1. Selenium 等待

    2024-07-10 15:46:03       8 阅读
  2. MySQL中的JOIN、LEFT JOIN、RIGHT JOIN讲解

    2024-07-10 15:46:03       7 阅读
  3. 学懂C#编程:C# 索引器(Indexer)的概念及用法

    2024-07-10 15:46:03       9 阅读
  4. c语言数据结构--链队列

    2024-07-10 15:46:03       8 阅读
  5. Ubuntu 22.04 设置swap交换空间

    2024-07-10 15:46:03       9 阅读
  6. ThreadLocal的内存泄漏

    2024-07-10 15:46:03       9 阅读