课程笔记

Lecture 00

技术的不平衡

设计计算机系统获得高性能,但是处理器速度,存储器速度,存储容量与互联数据速率都在迅速提高,并且在以不同的速度提高,像设计出均衡的系统,但是技术的不平衡使其难以实现

Lecture 01

通用电子计算机

每个计算机都能完成同样的任务,并且不需要重新设计。

  1. 通用:不是专用设备,所有计算机足够时间和存储空间能完成相同计算,新的计算不需要重新设计
  2. 电子:电子元件
  3. 数字:信息采用数字化的形式表示

计算机系统

  • 硬件
  • 软件

结构与组织的差别

  • Architecture对程序员可见并且直接影响了程序的执行(指令集…,不同数据类型需要的位数)
  • Organization对程序员不可见,操作单元及其相互之间的联系,对程序员没有直接影响。

历史

冯诺依曼:

  • 核心:用主存存放指令以及数据

    在断电情况下,主存里面什么都没有,程序是保存在硬盘中的,通过载入内存才能运行,CPU只从内存中读取数据与指令,但是不能在内存中完成计算功能
    CPU区分数据和指令的依据就是不同指令阶段取得的不同

摩尔定律:一块芯片上的晶体管数量每隔一年/18个月就能翻一番

晶体管数量增加或者芯片的减少:性能以及便捷度,功耗降低,价格便宜

真空管-晶体管-小中大规模集成电路

  • 真空管
  • 晶体管:更小,更便宜,热量更少>更复杂的算术逻辑控制单元
  • 集成电路:在一块硅片上组装电路

Performance

数据的处理,存储,移动

  • 时钟:一个脉冲

  • 时钟频率: 一秒钟内一个计算机能完成的最多的最基础操作的数量

  • 时钟周期: 两个脉冲间的时间

    两个机器执行一个任务需要的时钟周期数可能不同,不能确定时钟频率更大的一定更快

  • CPI(Cycles per Instruction)I(The Number of Instructions)

image.png

  • MIPS(Million Instructions per Second)可以找一些耗时的指令,对自己的cpu做特定的优化

image.png

CPU

Central Processing Units:CPU直接与内存打交道,它会读取内存中的数据进行处理,并将结果保存到内存。如果需要保存到硬盘,才会将内存中的数据复制到硬盘。

  • 计算机由存储器(M),IO,CPU以及系统总线组成
  • CPU由控制器,算术逻辑单元(ALU/CA),寄存器,CPU内部互联组成
  • 控制器由顺序逻辑,控制器的寄存器与译码器,控制存储器组成。

     以上每层次的部件相互都有交集

Lecture 02

计算机结构

各个部件的发展速度不均衡

关键概念

  • 数据与指令存于读写的存储器中
  • 存储器中的内容由其位置(location)寻址,无论存储的数据类型是什么。
  • 指令的执行按照一定顺序,除非被明确的调整。

存储器的问题

不能跟上cpu的速度,Memory Wall

  • 使DRAM的接口更宽而不是更深,增加总线的数据宽度,增加每次能取出的位数
  • 加入高速缓存Cache或者其他缓冲机制来改进,减少存储器的访问频度和数据传输率
  • 通过使用高速总线与分层总线来缓冲并且使数据流结构化,增加处理器与存储器之间相互连接的带宽

对存储器的要求

  • 大存储容量,高速的性能,合理的价格——采用多内存层次体系

IO的问题

不能跟上CPU的速度,不同的I/O有不同的速率

  • Buffering 不同的io传输的数据量不同
  • New interface techniques更好的接口

CPU(Central Processing Units)

  • 问题:cpu在等待I/O的时候闲置
    • 中断:一种能够打断正常运行序列的机制
    • 让cpu在执行完指令后去check是否有中断
    • 按顺序处理处理中断-不能及时响应更重要的中断
    • 嵌套中断-避免错失更重要的中断

Bus

如何连接各个模块?

  • 多路传送与总线
  • Communication pathway connecting two or more devices
  • Type:
    • Data lines: 在系统模块之间传输数据,数据
    • Address lines: 数据总线或者输入输出的来源或者终点,地址
    • Control lines:控制对数据或者地址线的使用,控制信号,时序信号,典型的有储存器,I/O的读写,传输响应,对总线控制的请求与准许,中断请求与响应,时钟,复位… 

Lecture 03

二进制的表示

补码

参考资料

  • 满足正负数的相加,使得负数能够使用加法器参与加法运算的一种码(原码的乘除更简单)
  • 原码转补码:
    • 正数的补码即为自己,
    • 负数的补码为原码符号位不变,其余逐位求反再加1
    • 负数的补码取反加一即为所对应正数的补码
  • 原码取反后得到的值加本身会刚好的到所有的位都是1的二进制数,再加一就刚好进位得到模(可以理解为一个循环的周期)。所以取反加一是无论如何都能取到补码的。四位的模就是16
  • 高位为什么可以直接舍弃:因为高位永远是模的倍数
  • 补满的由来:取较大的数,减去能表示的(最大的数+1)来表示负数,例如1000能表示8,减去(1111表示的15+1=16)等于-8,那么就表示负数。其中16也被称为一个模,即数字表示的一个周期

    参考钟表

浮点数

增加一个小数点的位置,表示同样多的数的数量,但是能表示更大的范围,那么说明中间稀疏了。
±𝑆 × 𝐵 两个相邻的数之间的间隔随着数值的增大逐渐变大,但是份数没有变化

  • 定点数表达法的缺点在于固定的小数点位置决定了固定位数的整数部分和小数部分,不利于同时表达特别大的数或者特别小的数。
  • 符号sign
  • 偏值指数expedient 8位,没有符号,偏值为127。
  • 有效数:significand
  • 为了表示-2——2之间的其他数,取两个数表示0,将+-2到+-2之间的数分给+-2之间的数
  • IEEE:提出了一些非公约数的表示方法

image.png
image.png

Lecture 04

ALU(算数逻辑运算单元)

全加器

三个输入,两个输出
image.png

异或:相同则为0,不同则为1,需要3个延迟(latency)

AND与OR需要1个延迟,并且可以同时做, 2 latency

Serial Carry Adder串行

image.png
 2n+1=2(n-1)+3,在等待Cn-1的时候,可以先做x异或y(3 latency),2(n-1)>=3那么n>=2.5,
S1=6,S2=6

Carry Look Ahead Adder先行

  • 利用C的递推公式

image.png

  • 第一个单位的延迟,用来求所有的P,所有的G。1
  • 再利用2个单位的延迟,求出所有的C。2
  • 再利用最后3个单位的延迟,求Si。之前的3个单位可以求Xi异或Yi。3
  • 代价:电路非常复杂,在第2步的时候

Partial Carry Look Ahead Adder 部分先行

image.png

  • 3+2+2+5,第一个3是第一个先行部分的前两个步骤,之后的两个2即为后面两个先行部分的第二个步骤(有一个1前面已经做了),最后的5为最后一个先行部分的后两个步骤。

Addition

原理

两个数相加的补码等于两个数的补码相加

溢出

X=Y!=S或者C!=C,在上溢出的时候,ALU必须指出这个事实,通知其他部件不要使用这个结果(无论是否有进位,都有可能出现上溢出)

image.png

上溢出,两个数最高位都是0,结果相加后出现了1

Subtraction

原理

两个数相减的补码相当于一个数的补码加上另一个数的负数的补码

溢出

与加法的一样
加法的时候C等于0,减法的时候C等于1
image.png

Multiplication

无符号乘法

后一个乘数Y的每一位与第一个乘数X相乘,得到partial product,与原数相加,再右移,如果Y的某一位为0,那么partial product为0,再右移。partialproduct占高四位,Y占后四位,由于右移的关系,每次取的Y的那位总是在最低位。(当Y没有的时候,得到的partial product就是答案。)可以先都是无符号的乘法运算,然后再加符号(取补码)

但是
乘数为负数:乘数的各位不再对应于必须发生的移位或者乘法操作
被乘数为负数:需要部分积左边填充1来完成

Booth算法

由于第一种无法解决补码的相乘,连续的1串与0串可以跳过

  • 一开始product全为0
  • 设置Y0为0,扫描某一位与这一位右边的那一位,从左到右根据两者的数值(01为+,10为-),判断是+x还是-x还是+0,然后再右移,由于是补码表示,每次右移需要算术右移,使符号不变。为什么可以这么做ppt 17页,或者第八版206页
  • image.png
  • image.png
  • image.png
  • image.png
  • image.png

Division

无符号除法

从左到右检查被除数的位,知道被检查的位所表示的数大于或者等于除数,在这个过程中,一串0不断从左到右放入商,上述事件发生的时候,一个1就被放入商中,并且被除数(部分余)减去除数得到部分余。

image.png

除数的不断右移可以看成是被除数相对左移

  • 可以把部分余与商放在一个寄存器内,一开始商不占任何位数,dividend就是部分余数,前面补符号位,先左移,再判断remainder部分能不能减去除数,如果能最低位+1,减去除数,otherwise,+0,(recover)保持原样;最后得到商与余数。
  • 如何判断remainder是足够大的呢:同号相减,异号相加。计算出来的符号与remainder(dividend)相同就足够,商加1

image.png

  • 先左移,试商,同号相减异号相加,如果不足够,就放0,并且recover remainder。如果足够就放1,不recover,
  • 如果商与被除数有不同的符号,那么把商用补码表示
  • 问题:recover耗费太大,会消耗一个寄存器

不回复余数除法

  • 补足符号位,dividend放在商的位置
  • remainder与divisor同号相减,异号相加,(这里会有一次quotient的加1或者0
  • 得到的remainder如果符号与divisor相同,商加1,新的remainder等于两倍(左移)之前的remainder减去divisor,(先移位再加减得到新的remainder)
  • 否则商加0,新的remainder等于两倍(左移)之前的remainder加上Y
  • 新的remainder如果符号又与divisor相同,那么商加1,否则商加0,重复之前的步骤
  • 总的重复次数(左移的次数)等于位数
  • 左移quotient(remainder不受到影响,这个操作与下面的操作是并列的),如果是负数,说明除数与被除数符号不同,那么quotient加1
  • 如果remainder与被除数符号不同,remainder加上divisor(除数被除数同号),或者减去divisor(除数被除数异号)即 ++-,–+,加上divisor,+–,-++减去divisor(Dividend,divisor,remainder)

image.png

Lecture 05

浮点数计算的问题

精确度不够,转换的时候消耗大。解决方法:用BCD表示的四个字代码来表达1到9

加法

进位

由于四位可以表示十五个数字,如果低位产生了进位,或者低位相加大于等于10(1010),就再加上0010,让这个位变成原本表示的数字,进位的1不能丢

减法

减去一个数就是加上他的”补码“

image.png

  1. 因为是在0-9的范围内求 的所谓补码(每四个取一个inversion,然后在最后四个位加上一个“0001”),所以0的所谓补码是9,2的所谓的补码是7
    1. Inversion
      1. 先取反,再加上1010;
      2. 先加上0110,再取反;
  2. 之后的加法
    1. 在变减号为加号过后,因为最后要减去10n,如果有进位,那么舍去进位,如果没有进位,还是要强行减去,即取所谓补码(取inversion,最后再加上0001)

Lecture 06 浮点数计算

加减法

符号幅值加法

相加

如果有进位就有进位嘛,符号与加数相同,并且有进位就溢出

相减

减去一个数就相当于加上这个数的补码(取反加一)即X+(-Y)=X+(111..1-Y+1)-1000..0,如果没有产生进位,就是无法减去1000..0,那么就将结果再取反加1,没有进位:符号与被减数相反。有进位:符号与被减数相同

乘法

除法

精确度考量

Lecture07 内部存储器

存储器

一定数量的可标识的单元构成,每个单元可以存储一个数值

  • 地址是单元的唯一标识符
  • 随机存取:通过编排的寻址逻辑,存储器的单个字直接被取出
  • 地址空间:可标识的单元总数,
  • 寻址能力:存储在每个单元中的信息的位数,计算机能找到的地址位数,由计算机定义的地址长度,

半导体主存

存储位元

  • 两种稳态或者半稳态代表二进制的1或者0;
  • 能够至少一次写入信息
  • 能够读出状态信息
  • select:为读写操作选择一个位元;control:表明读或者写;data in;sense;

RAM

  • 容易读写,数据容易消失,电一消失就没了

SRAM

  • 不需要刷新来维持数据
  • 需要一直供电状态才稳定

两者对比

  • 需要持续供电
  • DRAM密度高,体积小,集成度更高,价格更便宜,成本补偿了刷新电路的固定成本。常用于大容量存储器(内存用DRAM)
  • SRAM常用于cache,不需要刷新,只要供电就能存储数据

SDRAM(Synchronous DRAM)

  • 传统DRAM是异步的,处理器传出地址,并且控制数据从DRAM存取或者写入,在DRAM执行的过程中,处理器需要等,就是需要一段时间的delay,DRAM
  • SDRAM是同步的:SDRAM moves data in time with system clock(外部clock信号), and CPU knows when data will be ready.
  • 约定好了时钟周期
  • DDRSDRAM(Double-data-rate SDRAM )
    • Send data twice per clock cycle, once on the rising edge of the clock pulse and once on the falling edge 

ROM

  • 含有不能改变的永久性数据,可读不可写,制造过程中数据固化到芯片上,在量产的时候,成本更低,

  • 非易失性质:断电的时候数据不会丢失 Nonvolatile,用于操作系统啊,微程序啊,系统例程啊,函数表啊之类的

      但是如果有error,就废了

  • PROM:只能写入一次,用电;方便灵活,写入时需要特定装备READ MOSTLY

  • Easable PROM:可读可写,写入前需要擦除(紫外线照射)之后什么都不剩,可以修改多次,比PROM更贵,擦除很麻烦,但是能更新啊

  • Electrically Erasable PROM:更贵,用电,任何时候可以写入,无需擦除,但是写入很慢,集成度低

  • Flash memory:价格与功能介于EPROM与EEPROM之间,电擦除技术很快,可以擦除某些块而不是整块芯片,每一位只使用一个晶体管,高密度。

芯片逻辑

可寻址单元

  • 将一些cells存在一起,它们都拥有相同的地址,每次只能最多追踪到可寻址单元
  • 寻址模式:按字节byte寻址(common),按word寻址

Memory array

将许多寻址单元排成方块型,地址线复用,减少了地址线的数量,降低复杂度,与寄存器的位数无关

  • 只需要某一列或者某一行的地址线就能提供列与行的地址,11位地址信号定义行地址,另十一位地址信号去定义列地址,每个地址信号由行地址选通与列地址选通信号,为芯片提供时序控制信号

刷新

使DRAM芯片丧失读写能力而刷新所有数据位元。刷新 计数器遍历通过所有的行的值,对每一行,刷新计数器的值被当作行地址输出到行译码器,激活RAS,数据被读出后写回源地址,从而使得相应行的所有位元被刷新

  • Centralized refresh:停止读写操作,如上述,一行一行刷新
  • Decentralized refresh: 在每个读写周期完
  • Asynchronous refresh:每64ms更新一行,高效

芯片

8M*8:地址空间8M,寻址能力8bits,8M需要23位,地址线12条,数据线8条

  • 引脚:写允许WE,输出允许OE,接地线Vss,电源线Vee,行地址选通RAS,列地址选通CAS,Vpp,Vss,CE,Address,Data
  • 字拓展:地址线的数量增加,地址空间增加(不一定,如果以前地址线就没有达到饱和
  • 位拓展:数据线数量增加,寻址能力增加(不一定,?,总线线宽

Lecture08 Cache

参考1

参考2

基础概念

  • 更快更小的缓存器件,内存存储器,主存的速度跟不上CPU的速度。

  • CPU 访问数据存在时间局部性和空间局部性,所以可以将 CPU 需要频繁访问的少量热数据放在速度快但很贵的 SRAM 中,既能大幅度改善 CPU 性能也不会让成本提升太多

存取方式

  • 顺序存取:按照顺序,从当前的存储位置,移动到所要求的位置,磁带

  • 直接存取:直接到达所需的块,然后在块中顺序搜索,两者也都需要时间,磁盘

  • 随机存取:根据可寻址的存储位置所对应的物理编排的寻址机制来寻址

  • 关联存取:对一个字中的指定位相比较,查看是否满足特定的样式,能同时在所有的字中进行,即根据内容而不是地址进行检索

工作机制

  • check: 传入数据地址的时候,是一个地址一个地址传入的,如果这个地址的数据miss,那么搬运这个数据所在的块的所有数据到总线,总线经过数据缓冲器,同时更新cache,同时给到CPU

  • hit

  • miss

思考问题

hit与miss的检测

Cache存在tags来标志他的内容,存储的是哪一块,tag与主存里的块位置有关

为什么不直接把word搬到CPU呢

局部访问性:同一值或者相关的存储位置会被频繁访问

  • 时间:某个时候访问了存储器的特定位置,不久的将来会访问相同位置的数据或者资源

  • 空间:一个存储位置在特定的时间被访问,不久的将来将会访问附近的存储位置,所以该区域值得更快的访问

  • Cache利用空间局部性

如果miss,主存的块会经过一个数据缓存器,然后同时更新cache,同时传送到处理器内

为什么要读block

利用空间局部性

cache节省时间

  • 时间主要花在地址的查找,那么从主存存取一个单元和从贮存存取一个块所需要的时间大致相同

  • 如果想要T小于T,那么p就要?

  • hit的时候运行很快,搬一个块的时间比那个块所有的存储单元单独搬的时间快,hit节省的时间弥补了miss消耗的时间

  • cache读取一个块的总时间为T=mt;m为块内数据的数量,那么当命中的时候,消耗一个t,没有命中,消耗t+mnt(放入一个块的内容),n为主存和cache存储时间的比值,如果接连读取的数据是属于一个块的内容(局部访问性),那么命中后读取一个块的时间为T,miss后再读取这个块的时间为T+nT

设计要素

容量

增加了p,但是会增加Tc,不会满足局部的概念,hit增加的速度会越来越慢

映射方法

M:内存中block的数量

C:cache中block的数量,行的数量

S:cache中的组数

K:每个cache组中行的数量

Tag位数 = logM-logC

直接映射

  • 内存里每一个block都有唯一的对应的行,对应的行号等于块号%总的行数量

  • cache每一行存储的是每一个块的K个字与tag标记与控制位

  • 主存地址分为:字块标记(找到块的位置),cache字块地址(找到行的位置),字块内地址

  • 如果cache有4行,一行8个字,主存一共有128个字,分为16个块,每个字有单独的地址。为了读取主存的数据,cpu传需要7位

    • 中间2位决定是4行中的哪一行被读取,(对应主存中那个部分的哪一个块被读取,确定了块在自己本身那个部分的占有的位置)

    • 最高2位的tag与cache该一行的tag作比较,决定了是这一行对应的哪个block占据了这个cache,(每一行对应了4个块)(对应主存中哪个部分(上图中的竖列)的某个块将被读取)

    • 最低的3位决定了是8个字中的哪一个 字被读取,(对应主存中那个部分的那一个块的哪一个字被读取)

  • 优点:简单,check,映射快

  • 缺点:thrashing,如果连续取到的字对应的各自的块都对应着同一行

关联映射

  • 一个块可以被加载到任意一个行当中

  • cache的每一行:每一块独有的tag加上该行对应的块的所有的数据

  • 控制逻辑:将主存地址简单的表示为一个标记域加上一个字域,一个标记域对应着唯一的一个块

  • 优点:避免了thrashing

  • 缺点:复杂的实现,在cache中查找会相当复杂,昂贵,因为需要查找cache的每一行来判断是否命中(小cache完全ok)

组关联映射

一个块可以被加载到任何在指定set中的line(这里是把cache分组,cache中组是按照顺序排下去的,主存中按顺序,每一行就是(组0,组1,组2,组3),(组0,组1,组2,组3)… 分别对应tag0,tag1,…
cache中组间采用直接映射,组内采用全相联映射。每组对应着存储器的某些块,这些块可以对应这个组里面任意的行)
一个块存储的行可以在set中有K个选择,再根据tag遍历有没有需要的数据(之前的直接映射可以理解为把主存,cache按行数分组,任意一个组的所有块能覆盖完cache的行)

S:cache中的组数

M:存储器中块的数量

K:每个cache组中行的数量 K-Way set

C:cache的行数

  • 控制逻辑:将主存地址认作:Tag,set,word;

  • tag:log2(块的数量除以cache中组的数量),tag对应着cache中的set的某一行,可能存在与该set的任何一行,cache的任何一组中,每一行的tag都不可能一样

  • Set:对应着哪一个组(块号mod组的数量)

  • word:对应着一个块的哪一个字

  • 优点:结合了之前两种映射的优点,任意大小的cache中更适合,先进set,然后再顺序查找,

  • 缺点:结合了缺点

  • 如果K等于1 ,相当于直接映射(一行一组),如果等于C,相当于关联映射

三者对比

关联度:一个主存块映射到Cache中时,可能存放的位置个数 ,关联度越高,miss越少

  • 直接映射时间,tag最短,关联度最低,为1,命中率低

  • 关联映射时间,tag最长,关联度最高,为Cache行数,但是check时间最长

  • 关联映射的hit率最高,关联度居中,为N

替代算法:

对于直接映射来说,没有替代算法,因为每一个主存块对应特定的cache block

Least Recently Used (LRU)

  • 时间上最早使用的,长时间没有使用的,cache的每一行有一个use bit,被用过就是1,没用过就是0,被用过就更新他的timestamp,timestamp越小,那么越长时间没被使用

  • 使用依据:最近使用的更容易被使用,时间局部性

First In First Out (FIFO)

  • 增加一个轮询系统,一开始按顺序放进来,然后按顺序出去

  • 依据:之前放进来的更难使用,可以按照增加timestamp来计算

Least Frequently Used (LFU)

  • 使用频率最低的先出去

  • 增加一个计数器

Random

  • 依据:每个都有相似的几率被使用

读策略,写策略

读策略:

  • 如果memory被外来设备写入,那么如果cache中存在这个行,那么这个行被标记无效

写策略:

  • write through:cpu给出写的命令时,马上向存储器给出写入命令

    • 保证了主存的实时

    • 但是会造成大量的存储器的traffic,并且减慢写入操作,与cache追求的不同

  • write back

    • 如果一个block将要被覆盖,如果她之前被修改过那么将会被写回主存,增加一个dirtybit判断是否被修改了

    • 减少了写入操作,但是主存是过时的有些数据是无效的,IO的存取只允许通过cache进行,那么电路设计更加复杂,潜在的瓶颈问题

多重cache

进一步优化了取数据的时间

  • cache与处理器再同一个芯片,减少了处理器在外部总线的活动,减少了总线的占用率,加快执行

  • 全局缺失率:存在的cache都缺失了

Lecture 09 外部存储器

总体结构

有磁性物质包裹无磁性环状板

玻璃底板

  • 磁性表层更好粘合

  • 减少读写错误

  • 强度高

  • 抗破坏能力强

硬盘

  • 读写头每个表面有一个,并且固定在一起,同时移动,相对位置不变

读写

  • 磁敏电阻,电阻变化引起电压变化

  • 电磁感应,磁性物质方向与外磁场方向一样

磁头

  • 磁头更小,一个bit占据的位置更小,磁道间距离更近,更加高密度的数据处理,更多的数据存储

数据结构

扇区与sector

  • 每个扇区sector的数据量(但是总的信息量大于512B的)相同:512B(默认),扇区之间有间隔

  • 每个track都是同心圆,最外面的为0道,最里面的为N道,因为磁头一开始都在最外面,磁道之间有间隔

扇区的分布

  • CAV:Constant-angular velocity

    • 优点:读写的角速度是一样的,那么中间的杆的速度恒定,驱动装置简单

    • 缺点:浪费容量,每个扇区大小不同,但是数据量相同

  • 第二种方式:按周长划分区zone,每一区里还有tracks,同一个zone的不同的track扇区数量是恒定的,越远的越多,同一个zone按照第一种方式划分,

    • 优点:充分利用了磁盘的容量

    • 缺点:驱动变速,外面的夹角更小转的更慢,保证每个区的读写速度稳定,但是只是区域的速度不同,根据区域数指定速度

扇区的结构

  • 间隙:缓冲时间,等待判断

  • id:扇区号,head号(第几层),磁道号

  • 同步字节:标志有扇区的id或者data来临

cylinder:

所有相同相对位置的tracks组成

formatting格式化:

  • 需要有标志一个扇区的开始以及结束的points

  • 添加一些特殊的不能被使用者读取的数据来标志

  • gap用来缓冲IDfield的判断时间,17byte,41byte,20byte:前中后

  • SynchByte定界符,1byte

读取时间

Seek寻道时间

固定,开始准备时间以及移动的时间,Ts

旋转延迟rotational latency

转半圈的时间(平均)

存取时间

寻道时间+旋转延迟

数据传输时间

需要的总的数据量除以每道的数据量(需要的道数)除以一秒钟的圈数(或者乘以转每一圈的时间),一秒钟走过rN个byte,需要b个byte

文件读取

  • 如果在相邻的track上,除了第一次,之后的寻道时间忽略不计,并且大大减少了旋转延迟,每一圈只需要一个旋转延迟

  • 如果数据是随机分散的,那么每一个扇区都要消耗一个寻道时间,旋转延迟,以及数据传输时间

  • 如果磁盘上已经有一些数据了,那么不是完全的在5条道上,如果是6条:在情况一的基础上再加上一条道的旋转延迟而已

  • 碎片清理,就是把分散在各处的数据集中到一起,加快了读写速度,但是会对磁盘有损耗

查找算法:

  • First come first service:保证了任务处理的及时性,但是牺牲了时间效率,不同的任务可能需要的数据在不同的点,那么会消耗大量的读取时间

  • Shortest seek time first:先处理任务中距离当前磁头距离短的数据,移动距离小,但是牺牲了及时性,任务搁置

  • SCAN:在0道和N道不断移动

  • C-SCAN:只从N道移动到0道,从里到外,然后空移到里面

    • 这个与scan需要的平均等待时间相同,但是最长的等待时间减少了,只有一次从里到外
  • LOOK:当前移动方向没有任务就掉头,like elevator,但是要记住磁头的当前位置和当前的前进方向

光盘 Compact Disk

  • -R:recordable 可记录的,-RW:Rewritable 可重写的

  • 制作过程:用激光制作母片,高精度,高集中度

    • 用树脂通过母片印制

    • 不平的的表面用高反射的surface覆盖:通过激光照射,里面高低不平 从而反射的强度不同

    • 高反射的表面再用acrylic覆盖形成最外层

  • 读操作:CD与CD-ROM

    • 到了凹处,粗糙,反射强度低

    • 到了平处,反射强度高

    • 只有一根轨道,spiral,所有的sectors长度相同,那么读里面的时候,旋转速度更快,线速度恒定

    • 后者更粗糙,有错误修正装置

    • 优点:便宜,大量复制,可以携带;但是只读不能写,读取时间远长于磁盘

  • CD-R,CD-RW

    • 前者:有一层layer(dye layer)被高强度激光照射,能够改变反射性,之后可以在CDR或者CDROM的光驱上读

    • 后者:有一层具有两种反射性质的材料,能被激光改变,这层材料在五十万次或者一百万次过后会逐渐丧失特性

  • DVD:

    • bits之间联系更紧密

    • 有些dvd两边都可以存数据,后来没用了

  • 高精度光盘:High definition

    • bits更小,使用更短波长的激光照射,一般是蓝光紫光波段,能存储更多信息
  • 磁带

    • 读写技术与磁盘相同

    • 中间有软的tape,被磁性材料包裹

    • 多个头:并行

    • 一个头:串行