计算机组成原理—— 外围设备(十三)
记住,伟大的成就往往诞生于无数次尝试和失败之后。每一次跌倒,都是为了让你学会如何更加坚定地站立;每一次迷茫,都是为了让你找到内心真正的方向。即使前路漫漫,即使困难重重,心中的火焰也不应熄灭。它代表着你的热情、你的勇气以及对未来的无限希望。
无论世界如何变化,请保持那份最初的纯真与好奇。让每一个小小的进步成为通向伟大目标的阶梯,用每一次的努力编织成通往梦想的道路。在这个过程中,你会发现最强大的力量来源于自己内心的坚持与不懈追求。
因此,勇敢地迎接每一个挑战,积极面对生活中的每一次起伏。相信自己,你可以超越任何界限,实现心中所愿。因为你不仅仅是在为自己的梦想奋斗,更是在用自己的行动诠释着生命的意义。未来充满了无限可能,而你正是那个能够开启这些可能性的人。
所以,请继续怀揣着希望前行,用你的行动证明给世界看,你是独一无二的存在,拥有改变世界的力量。在你追求梦想的路上,每一步都将绽放出属于你的光芒,照亮你前进的方向,也激励着周围的人去追寻他们自己的星辰大海。未来正等待着你去书写,而你就是那支描绘辉煌篇章的笔。
计算机组成原理资源网
https://www.wenjingketang.com/这里面有ppt课后习题及答案,需要的可以自行下载
目录
8.1 外围设备概述
8.1.1 什么是外围设备
8.1.2 外围设备的分类和功能
8.2 磁盘存储设备详解
8.2.1 磁记录原理与记录方式
1. 磁记录物理原理
2. 常见磁记录方式
3. 编码示例(RLL(2,7))
8.2.2 磁盘的基本组成和分类
1. 机械结构组成
2. 分类标准
8.2.3 硬磁盘驱动器和控制器
1. HDD硬件架构
2. 控制器核心功能
8.2.4 磁盘上信息的分布
1. 物理结构参数
2. 低级格式化示例
8.2.5 磁盘存储器的技术指标
1. 关键性能指标
2. 可靠性指标
8.2.6 磁盘阵列(RAID)
1. RAID级别对比
2. Linux下RAID5配置示例
扩展1:磁头飞行高度控制技术(空气轴承原理)
1. 空气轴承工作原理
2. 飞行高度控制技术
扩展2:叠瓦式(SMR) vs 垂直记录(PMR)对比
1. 结构对比示意图
2. 性能对比表
扩展3:振动补偿系统原理
1. 系统组成框图
2. 振动补偿算法伪代码
扩展4:ZBR(区域位记录)详细算法
1. ZBR分区原理
**2. 分区配置示例代码
扩展5:纠错码数学推导(以Reed-Solomon码为例)
1. 伽罗华域(GF)基础
2. RS编码过程
扩展6:RAID重构过程状态机分析
1. 状态转移图
2. 重构过程伪代码
扩展7:Facebook冷存储架构设计案例
1. 架构拓扑图
2. 关键设计参数
3. 纠删码存储示例
8.1 外围设备概述
8.1.1 什么是外围设备
外围设备(Peripheral Devices)是计算机系统中除中央处理器(CPU)和内存外,所有与主机进行数据交换的硬件设备。它们通过接口与主板连接,扩展计算机的功能边界。
核心特征:
- 非核心计算组件
- 需通过标准接口(USB/PCIe/SATA等)连接
- 具有独立电源需求(部分设备)
8.1.2 外围设备的分类和功能
按功能分类的完整体系:
类别 | 功能描述 | 典型设备示例 |
---|---|---|
输入设备 | 将外部信息转换为数字信号 | 键盘、扫描仪、麦克风 |
输出设备 | 将数字信号转换为人类可感知形式 | 显示器、打印机、扬声器 |
存储设备 | 持久化数据存储 | HDD、SSD、光盘驱动器 |
通信设备 | 实现系统间数据交换 | 网卡、调制解调器、蓝牙适配器 |
混合设备 | 综合多种功能 | 触摸屏(输入+输出)、多功能打印机 |
8.2 磁盘存储设备详解
8.2.1 磁记录原理与记录方式
1. 磁记录物理原理
- 基本原理:利用磁性材料的剩磁特性存储二进制数据(0/1)
- 关键组件:
- 磁头:实现电信号→磁场→磁化翻转
- 磁介质:如钴基合金盘片,划分磁道和扇区
- 写入过程:电流通过磁头线圈产生磁场,磁化盘片表面
- 读取过程:磁头感应磁化方向变化,转化为电信号
2. 常见磁记录方式
记录方式 | 编码规则 | 优点 | 缺点 |
---|---|---|---|
归零制(RZ) | 正脉冲表1,负脉冲表0,脉冲后归零 | 简单 | 低密度,高误码 |
不归零制(NRZ) | 电平翻转表1,保持表0 | 密度高 | 时钟同步困难 |
调频制(FM) | 每位起始处跳变,中间跳变表1 | 时钟同步方便 | 效率低 |
改进调频制(MFM) | 仅当连续0时插入同步跳变 | 密度提升25% | 复杂度增加 |
游程长度受限码(RLL) | 限制连续0的数量,提升密度 | 高密度,高效 | 编码复杂 |
3. 编码示例(RLL(2,7))
# RLL(2,7)编码表片段示例 encoding_table = {'00': '1010','01': '1000','10': '0010','11': '0000' }
8.2.2 磁盘的基本组成和分类
1. 机械结构组成
+-----------------------+ | 主轴电机 → 旋转盘片 | | 磁头臂 → 音圈电机控制 | | 空气过滤系统 | | 接口电路板(PCB) | +-----------------------+
2. 分类标准
分类维度 | 类型 |
---|---|
介质类型 | 硬盘(HDD)、软盘(Floppy)、磁带 |
可移动性 | 固定盘、可换盘 |
接口类型 | SATA III (6Gbps), SAS (12Gbps), NVMe(SSD专用) |
应用场景 | 企业级(15K RPM)、桌面级(7.2K RPM)、监控专用 |
8.2.3 硬磁盘驱动器和控制器
1. HDD硬件架构
+------------+| 主机接口 || (SATA/SAS)|+-----+------+|+-----v------+| 控制器 || (ARM SoC) |+-----+------+|+-----v------+ +-----------------+| 缓存芯片 <-----> 读写缓冲 (256MB) |+-----+------+ +-----------------+|+-----v-------------------+| 前置放大器/读写通道 |+-----+-------------------+|+-----v-------------------+| 磁头堆栈组件 (HSA) |+-------------------------+
2. 控制器核心功能
- 坏道管理:G-LIST(增长缺陷表)和P-LIST(原始缺陷表)
- 命令队列:NCQ(Native Command Queuing)优化IO顺序
- 纠错编码:Reed-Solomon码处理扇区错误
8.2.4 磁盘上信息的分布
1. 物理结构参数
+------------------------+| 柱面 (Cylinder) || → 磁道 (Track) || → 扇区 (Sector) || → 512/4K字节 |+------------------------+
2. 低级格式化示例
// 模拟磁盘低级格式化过程 struct DiskGeometry {int cylinders;int heads;int sectors_per_track; };void low_level_format(struct DiskGeometry dg) {for (int cyl = 0; cyl < dg.cylinders; cyl++) {for (int head = 0; head < dg.heads; head++) {for (int sec = 0; sec < dg.sectors_per_track; sec++) {write_sector(cyl, head, sec, BLANK_DATA);}}} }
8.2.5 磁盘存储器的技术指标
1. 关键性能指标
指标 | 计算公式 | 典型值 |
---|---|---|
平均寻道时间 | 机械运动时间 | 3-15ms |
旋转延迟 | 0.5*(60/RPM) | 2ms(15K RPM) |
数据传输率 | (转速×字节/磁道)/60 | 250MB/s(SATA III) |
IOPS | 1000/(寻道+旋转+传输时间) | 150-200(随机读) |
2. 可靠性指标
- MTBF(平均无故障时间):1,000,000小时↑
- 年故障率(AFR):0.5%-2%
- UBER(不可恢复误码率):<10^-15
8.2.6 磁盘阵列(RAID)
1. RAID级别对比
级别 | 冗余性 | 最少盘数 | 利用率 | 典型应用场景 |
---|---|---|---|---|
RAID0 | 无 | 2 | 100% | 视频编辑临时存储 |
RAID1 | 镜像 | 2 | 50% | 系统盘 |
RAID5 | 分布式校验 | 3 | (n-1)/n | 数据库存储 |
RAID6 | 双校验 | 4 | (n-2)/n | 归档存储 |
RAID10 | 镜像+条带 | 4 | 50% | 金融交易系统 |
2. Linux下RAID5配置示例
# 使用mdadm创建RAID5 mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sd[abc]1 --spare-devices=1 /dev/sdd1# 查看RAID状态 mdadm --detail /dev/md0# 输出示例: # Version : 1.2 # Creation Time : Wed Aug 21 10:17:14 2024 # Raid Level : raid5 # Array Size : 209584128 (199.88 GiB 214.60 GB) # Used Dev Size : 104792064 (99.94 GiB 107.30 GB)
注:以上为精简核心内容,下面是扩展知识:
扩展1:磁头飞行高度控制技术(空气轴承原理)
1. 空气轴承工作原理
其中:
- hh:磁头与盘面间隙(典型值1-3nm)
- pp:气膜压力
- μμ:空气粘度
- UU:盘面线速度(~20m/s)
2. 飞行高度控制技术
- 热膨胀调节:
# 磁头加热器控制算法示例 def adjust_flying_height(current_height, target=2.5e-9):error = target - current_heightheater_power = PID_controller(error) # PID控制输出apply_thermal_expansion(heater_power) # 通过加热改变磁头形状return new_height
- 关键技术参数:
参数 典型值 飞行高度 1-3 nm 动态调节精度 ±0.1 nm 响应时间 <10 μs
扩展2:叠瓦式(SMR) vs 垂直记录(PMR)对比
1. 结构对比示意图
PMR结构: +---+---+---+---+---+ | | | | | | ← 独立磁道 +---+---+---+---+---+SMR结构: +-------------------+ | 磁道N | ← 覆盖下层磁道N-1 +-------------------+
2. 性能对比表
特性 | SMR | PMR |
---|---|---|
存储密度 | 提高15-25% | 标准密度 |
随机写性能 | 差(需缓存区重组) | 优秀 |
适用场景 | 冷数据/顺序写入 | 通用存储 |
典型容量 | 20TB+ | 18TB |
写放大率 | 2-5倍 | 1倍 |
管理复杂度 | 需要专用主机支持 | 即插即用 |
扩展3:振动补偿系统原理
1. 系统组成框图
+---------------------+ | 加速度传感器 | → 检测振动信号 +----------+----------+| +----------v----------+ | 自适应滤波算法 | → 消除机械共振频率 +----------+----------+| +----------v----------+ | 音圈电机(VCM) | → 动态调整磁头位置 +---------------------+
2. 振动补偿算法伪代码
class VibrationCompensator:def __init__(self):self.buffer = CircularBuffer(size=100) # 存储振动历史数据self.filter = KalmanFilter() # 卡尔曼滤波器def update(self, acceleration):# 1. 数据预处理filtered = self.filter.apply(acceleration)# 2. 补偿量计算compensation = 0for i in range(self.buffer.size):weight = 0.5**(i+1) # 指数衰减权重compensation += self.buffer[i] * weight# 3. 驱动VCM执行补偿adjust_head_position(compensation)# 更新缓冲区self.buffer.push(filtered)
扩展4:ZBR(区域位记录)详细算法
1. ZBR分区原理
数据密度公式:D(r)=B/2πr⋅s(其中:r=半径,s=扇区数,B=每扇区字节数)数据密度公式:D(r)=2πr⋅sB(其中:r=半径,s=扇区数,B=每扇区字节数)
**2. 分区配置示例代码
// 典型ZBR分区表 struct ZBR_Zone {int start_sector;int end_sector;int sectors_per_track; // 外圈扇区数多于内圈int bit_density; // bits/inch };struct ZBR_Zone zones[] = {{0, 10000, 250, 2_800_000}, // 外圈区域{10001, 20000, 200, 2_200_000},{20001, 30000, 180, 1_900_000}, // 内圈区域 };
扩展5:纠错码数学推导(以Reed-Solomon码为例)
1. 伽罗华域(GF)基础
2. RS编码过程
扩展6:RAID重构过程状态机分析
1. 状态转移图
[正常] --检测到磁盘故障--> [降级] [降级] --插入新磁盘--> [重构中] [重构中] --完成校验--> [正常]--超时/错误--> [失败]
2. 重构过程伪代码
def raid_rebuild(raid_array, new_disk):state = "PREPARING"try:state = "READ_PARITY"parity_data = calculate_parity(raid_array.healthy_disks)state = "WRITE_DATA"for stripe in raid_array.stripes:rebuild_data = xor_operation(parity_data, stripe.healthy_blocks)new_disk.write(stripe.position, rebuild_data)state = "VERIFY"if verify_integrity(new_disk):state = "NORMAL"return Trueelse:state = "FAILED"return Falseexcept Exception as e:log_error(f"重构失败于状态 {state}: {str(e)}")state = "FAILED"return False
扩展7:Facebook冷存储架构设计案例
1. 架构拓扑图
+----------------+ +----------------+ | Web服务器 | | 热存储集群 | | (处理元数据) |<---->| (SSD, RAID10) | +----------------+ +----------------+↓ +----------------+ +----------------+ | 编码代理 |----->| 冷存储集群 | | (Erasure Coding)| | (SMR HDD, RS(10,16)) +----------------+ +----------------+
2. 关键设计参数
参数 | 规格 |
---|---|
编码方案 | Reed-Solomon(10,16) |
存储密度 | 80PB/机架 |
功耗比 | 0.7W/TB |
数据完整性 | 99.9999999999% (12个9) |
访问延迟 | 分钟级 |
3. 纠删码存储示例
# RS(10,16)编码示例 from reedsolo import RSCodeccodec = RSCodec(6) # 可纠正6个错误 data = b"Facebook_Cold_Data_123" encoded = codec.encode(data)# 模拟存储节点分布 storage_nodes = {'node01': encoded[0:5],'node02': encoded[5:10],'node03': encoded[10:15],'node04': encoded[15:20],'node05': encoded[20:25],'node06': encoded[25:30] # 最后6个为校验块 }
相关文章:

计算机组成原理—— 外围设备(十三)
记住,伟大的成就往往诞生于无数次尝试和失败之后。每一次跌倒,都是为了让你学会如何更加坚定地站立;每一次迷茫,都是为了让你找到内心真正的方向。即使前路漫漫,即使困难重重,心中的火焰也不应熄灭。它代表…...
面试题之Vuex,sessionStorage,localStorage的区别
Vuex、localStorage 和 sessionStorage 都是用于存储数据的技术,但它们在存储范围、存储方式、应用场景等方面存在显著区别。以下是它们的详细对比: 1. 存储范围 Vuex: 是 Vue.js 的状态管理库,用于存储全局状态。 数据存储在内…...
window中git bash使用conda命令
window系统的终端cmd和linux不一样,运行不了.sh文件,为了在window中模仿linux,可以使用gui bash模拟linux的终端。为了在gui bash中使用python环境,由于python环境是在anaconda中创建的,所以需要在gui bash使用conda命…...

象棋掉落动画(局部旋转动画技巧)
1.被撞击阶段:根据被撞击速度,合理设置被撞距离 2.倒地阶段:象棋倒地的同时稍微前移 3.滚地阶段:象棋滚地后停止,在最后5帧内稍微回转一下。这里启用“PRS参数”的旋转来制作局部旋转动画...

Pycharm 2024在解释器提供的python控制台中运行py文件
2024版的界面发生了变化, run with python console搬到了这里:...

课题推荐:高空长航无人机多源信息高精度融合导航技术研究
高空长航无人机多源信息高精度融合导航技术的研究,具有重要的理论意义与应用价值。通过深入研究多源信息融合技术,可以有效提升无人机在高空复杂环境下的导航能力,为无人机的广泛应用提供强有力的技术支持。希望该课题能够得到重视和支持&…...
《DeepSeek训练算法:开启高效学习的新大门》
在人工智能的浪潮中,大语言模型的发展日新月异。DeepSeek作为其中的佼佼者,凭借其独特的训练算法和高效的学习能力,吸引了众多目光。今天,就让我们深入探究DeepSeek训练算法的独特之处,以及它是如何保证模型实现高效学…...
promise用法总结以及手写promise
JavaScript中的 Promise 是用于处理异步操作的对象,它代表了一个异步操作的最终完成(或失败)及其结果值。Promise 是异步编程的一种更简洁和更可读的方式,避免了回调地狱的问题。 Promise 的基本概念 一个 Promise 是一个表示异步…...

春招项目=图床+ k8s 控制台(唬人专用)
1. 春招伊始 马上要春招了,一个大气的项目(冲击波项目)直观重要,虽然大家都说基础很重要,但是一个足够新颖的项目完全可以把你的简历添加一个足够闪亮的点。 这就不得不推荐下我的 k8s 图床了,去年折腾快…...
Android 11.0 系统settings添加ab分区ota升级功能实现二
1.概述 在11.0的系统rom定制化开发中,在进行系统ota升级的功能中,在10.0以前都是使用系统 RecoverySystem的接口实现升级的,现在可以实现AB分区模式来进行ota升级的,但是 必须需要系统支持ab分区升级的模式才可以的,接下来分析下看怎么样进行ota升级功能实现 2.系统sett…...

【Spring+MyBatis】_图书管理系统(上篇)
目录 1. MyBatis与MySQL配置 1.1 创建数据库及数据表 1.2 配置MyBatis与数据库 1.2.1 增加MyBatis与MySQL相关依赖 1.2.2 配置application.yml文件 1.3 增加数据表对应实体类 2. 功能1:用户登录 2.1 约定前后端交互接口 2.2 后端接口 2.3 前端页面 2.4 单…...
什么是3D视觉无序抓取?
3D视觉无序抓取是一种结合三维视觉技术、机器人控制与智能算法的工业自动化解决方案,旨在实现机器人对散乱、无序堆放的物体进行自主识别、定位和抓取的操作。其核心是通过3D视觉系统获取物体的三维空间信息,结合路径规划与避障算法,引导机械臂完成高精度抓取任务,无需依赖…...

【Java】理解字符串拼接与数值运算的优先级
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: Java 文章目录 💯前言💯代码分析1. 第一句输出2. 第二句输出3. 第三句输出 💯关键概念与深入分析1. 字符串拼接的优先级2. 运算符的优先级与结合性3. 字符串拼接与数值运算的结合 &…...

[250217] x-cmd 发布 v0.5.3:新增 DeepSeek AI 模型支持及飞书/钉钉群机器人 Webhook 管理
目录 X-CMD 发布 v0.5.3📃Changelog🧩 deepseek🧩 feishu|dingtalk📦 x-cmd✅ 升级指南 X-CMD 发布 v0.5.3 📃Changelog 🧩 deepseek 新增 deepseek 模块,用户可通过 deepseek 直接请求使用 …...

渗透利器:Burp Suite 联动 XRAY 图形化工具.(主动扫描+被动扫描)
Burp Suite 联动 XRAY 图形化工具.(主动扫描被动扫描) Burp Suite 和 Xray 联合使用,能够将 Burp 的强大流量拦截与修改功能,与 Xray 的高效漏洞检测能力相结合,实现更全面、高效的网络安全测试,同时提升漏…...
Linux、Docker与Redis核心知识点与常用命令速查手册
Linux、Docker与Redis核心知识点与常用命令速查手册 一、Linux基础核心 1. 核心概念 文件系统:采用树形结构,根目录为/权限机制:rwx(读/写/执行)权限,用户分为owner/group/others软件包管理: …...
DeepSeek HuggingFace 70B Llama 版本 (DeepSeek-R1-Distill-Llama-70B)
简简单单 Online zuozuo :本心、输入输出、结果 文章目录 DeepSeek HuggingFace 70B Llama 版本 (DeepSeek-R1-Distill-Llama-70B)前言vllm 方式在本地部署 DeepSeek-R1-Distill 模型SGLang 方式在本地部署 DeepSeek-R1-Distill 模型DeepSeek-R1 相关的 Models,以及 Huggin…...
Playwright入门之---命令
运行和调试测试 使用 Playwright,您可以运行单个测试、一组测试或所有测试。可以使用--project标志在一个或多个浏览器上运行测试。默认情况下,测试并行运行,并以无头方式运行,这意味着在运行测试时不会打开任何浏览器窗口&#…...

Java基于 SpringBoot+Vue的微信小程序跑腿平台V2.0(附源码,文档)
博主介绍:✌Java徐师兄、7年大厂程序员经历。全网粉丝13w、csdn博客专家、掘金/华为云等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇🏻 不…...
Fastapi + vue3 自动化测试平台(5)-- 封装树形结构列表生成器
使用FastAPI封装树形结构生成函数:高效处理层级数据 在Web开发中,树形结构是一种常见的数据组织形式,常用于菜单、分类、组织结构等场景。本文将介绍如何使用FastAPI封装一个通用的树形结构生成函数,支持动态选择字段,…...

React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...

YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...

Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...
Redis:现代应用开发的高效内存数据存储利器
一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...
探索Selenium:自动化测试的神奇钥匙
目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...
人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型
在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重,适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解,并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...