SCSI/UFS储存 基础

news2024/12/24 2:35:56

一、UFS协议

img

UniPro 的上面就是 UTP 和 SCSI 命令集,由于涉及的 SCSI 命令是很大一块需要单独来讲,所以这里只简单两笔。正如最开始提到的,UTP 和 SCSI 是属于 SCSI 这部分,在 JEDEC 的标准里能找到它们的具体说明。

UTP(UFS Transport Protocol):这层软件主要有两个目的,一是把 UniPro 的 segment 打包成 UFS 直接可以识别的命令格式;二是通过这层可以让 UFS 自己来掌握发送数据的节奏、控制自身的状态等,这样既可以免去 host 端持续的查询 UFS 的状态所带来的系统消耗,也是因为只有 UFS 本身最了解自己的内部状态,能够选择以最佳的方式在最佳时间把数据传递出去。

UFS Application Command Layer:这层是 UFS 命令集,分为 UFS 的独有内建命令集和 SCSI(Small Computer System Interface)的命令集。SCSI 命令分为 SBC 和 SPC,分别是 SCSI Block Commands 和 SCSI Primary Command。

在 SCSI 架构中,主机上的 SCSI 接口卡称为 Initiator,与其相连接的 SCSI 磁盘等设备称为 Target,在逻辑上,Initiator 和 Target 之间通信的工作模式,与两个网络设备之间的模式相似,他们之间采用 client-server 的“请求-回应”模式:

img

SCSI 的 Initiator 与 Target 共同构成了一个典型的 C/S 模型,每个指令都是“请求/应答”这样的模型来实现:
* Initiator主要任务:发出SCSI请求;
* Target主要任务:回答SCSI请求,通过 LU 提供业务,并通过任务管理器提供任务管理功能;
LU(Logical Unit):逻辑单元,是指一个可被操作系统识别和访问的逻辑存储单元。一个 UFS 设备可以包含多个 LU,每个 LU 可以被视为一个独立的存储设备;
LUs : LU 的复数形式;
LUN(Logical Unit Number):逻辑单元号码,是用来标识不同 LU 的唯一编号。每个 LU 都有一个对应的 LUN,它可以用来在系统中唯一地标识和访问该 LU;

二、UFS 重要 Layer

img

Logical unit

UFS 设备有若干个 LU,LU 接收主机发过来的命令或请求可能来自应用层的 SCSI 模块、设备管理器或者任务管理器:

img

每个 LU 都是独立的,“独立”表现在下面几个方面:

  • 逻辑地址空间是独立的,都是从LBA[2] 0(Logical Block Addressing,逻辑块寻址)开始;
  • 逻辑块大小可以不同,可以为4KB,…;
  • 可以有不同的安全属性,比如可以设置不同的写保护属性;
  • 每个 LU 可以有自己的命令队列;
  • LU 可以启动代码、应用程序代码和应用数据;

总结来说,划分不同 LU 有以下作用:

  • 外部可寻址;
  • 存储实体(可以单独做 Boot 启动、写保护或 RPMB[3](Replay Protected Memory Block,重播保护内存块) );
  • 内部任务队列;

三、UFS 架构

UFS 架构以 HCI(Host Controller Interface,主机控制器接口)为界划分为三部分。如下图,蓝色框上方调用 HCI 的为主机软件部分,蓝色框下方的为 HCI 封装的硬件处理细节部分,即 HC(Host Controller,主机控制器)

img

HCI 接口架构

数据结构服务于软件,主机的软件通过内存中的一系列主机 register 和数据结构 Transfer Request Descriptors 来与 Host controller 硬件进行交互。UFSHCI 定义了两种接口:IO Memory/Registar Space 以及 Host Memory Space,下图展示了 UFS HCI 的框图:

img

IO Memory/Registar Space:在这个空间,主机 register 被定义为主机的软件接口,通过 MMIO[4](Memory-Mapped I/O,内存映射 I/O)的方式被实现,主要包含了下面三种类型的寄存器:

  • Host Controller Capability Registers:这些寄存器提供了关于 HC 功能的描述。包括 UFS 标准版本、主机控制器支持的命令队列的大小以及主机控制器标识数据;

  • Runtime and Operation Registers:

    • Interrupt status:这些寄存器为主机软件提供了使能/中止以及中断状态的接口;
    • Host status:该寄存器显示 HC 的状态,并允许主机软件初始化/禁用 HC;
    • UTP Transfer Request:这些寄存器给 UTP Transfer Request List 提供了接口;
    • UTP Task Management Request:这些寄存器为 UTP Task Management request list 提供了一个接口;
    • UIC Command:这些寄存器为 Unipro 配置以及控制提供了接口;
  • Vendor Specific Registers:由供应商进行定义;

Host Memory Space:该空间中包含了能够描述将执行命令和命令中数据缓存的数据结构。简单地可以理解为——UTP Transfer Request List 负责通用的 IO 命令,UTP Task Mangement Request List 负责管理命令。

UTP Transfer Request List(传输请求列表)由一系列数据结构 UTRD (UTP Transfer Request Descriptor,传输请求描述符) 组成。UFS host controller 命令队列中的命令槽(slot)被 MMIO 到 UTRD,32 个 UTRD 对应最多 32 个 slot,UTRD 描述了要执行的命令及相关数据。
UFS 主机软件通过将要执行的命令及相关数据放置在 UTRD,再敲响主机控制器门铃(Offset 58h: UTRLDBR – UTP Transfer Request List Door Bell Register )向主机控制器发出命令。传输请求列表中的命令被 UFSHCI 顺序执行,但可能会按照不同的顺序完成。所有命令都可以产生命令完成中断或者更新在列表中的 UTRD 命令状态字段。UFS 主机软件可以在运行时向列表中添加命令。主机控制器支持中断聚合,即在预定义的命令完成设定的数量后生成单个命令完成中断。

img

UFS Task Management 在代码中的表示如下:

img

四、UFS电源管理

设置ufs电源为active状态
#define ufshcd_set_ufs_dev_active(h) \
	((h)->curr_dev_pwr_mode = UFS_ACTIVE_PWR_MODE)


/**
 * ufshcd_runtime_resume - runtime resume routine
 * @hba: per adapter instance
 *
 * This function basically brings the UFS device, UniPro link and controller
 * to active state. Following operations are done in this function:
 *
 * 1. Turn on all the controller related clocks
 * 2. Bring the UniPro link out of Hibernate state
 * 3. If UFS device is in sleep state, turn ON VCC rail and bring the UFS device
 *    to active state.
 * 4. If auto-bkops is enabled on the device, disable it.
 *
 * So following would be the possible power state after this function return
 * successfully:
 *	S1: UFS device in Active state with VCC rail ON
 *	    UniPro link in Active state
 *	    All the UFS/UniPro controller clocks are ON
 *
 * Returns 0 for success and non-zero for failure
 */
int ufshcd_runtime_resume(struct ufs_hba *hba)
{
	int ret = 0;
	ktime_t start = ktime_get();

	if (!hba)
		return -EINVAL;

	if (!hba->is_powered)
		goto out;
	else
		ret = ufshcd_resume(hba, UFS_RUNTIME_PM);
out:
	trace_ufshcd_runtime_resume(dev_name(hba->dev), ret,
		ktime_to_us(ktime_sub(ktime_get(), start)),
		hba->curr_dev_pwr_mode, hba->uic_link_state);
	return ret;
}
EXPORT_SYMBOL(ufshcd_runtime_resume);

debug ufs信息

ls /sys/kernel/debug/4804000.ufshc
crash_on_err   dump_device_desc host_regs    reset_controller
dbg_print_en   err_inj_scenario inject_fault show_hba
dme_local_read err_inj_stats    power_mode   stats
dme_peer_read  err_state        qcom

UFS低功耗,当ufs没有读写操作会断开电源进入sleep模式。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

不对ufs操作和往ufs写数据对比

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1389113.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

仅用三张图片实现任意场景三维重建:ReconFusion

论文题目: ReconFusion: 3D Reconstruction with Diffusion Priors 论文作者: Rundi Wu, Ben Mildenhall, Philipp Henzler, Keunhong Park, Ruiqi Gao, Daniel Watson, Pratul P. Srinivasan, Dor Verbin, Jonathan T. Barron, Ben Poole, Aleksande…

Java - Lombok的添加和使用详解

目录 🐶6.1 lombok介绍 🐶6.2 lombok使用 1. 🥙添加方法一 2. 🥙添加方法2 3. 使用 🐶6.3 lombok常用注解 1. 🥙Getter和Setter 2. 🥙ToString 3. 🥙NoArgsConstructor和Al…

随笔03 笔记整理

图源:文心一言 关于我的考研与信息安全类博文整理~🥝🥝 第1版:整理考研类博文~🧩🧩 第2版:提前列出博文链接,以便小伙伴查阅~🧩🧩 第3版:整理We…

光彩耀新年,戴森美发科技品类,见证成长美一面

龙年将至,祥瑞满天,新年曙光寓意着好运从「头」开始,同时也承载着人们对新一年的期许。值此之际,戴森中国美发科技品类正式发布全新蓝彩朱红色系列产品,为新年注入活力与希望,携手消费者一起开启护发造型新…

力扣hot100 寻找重复数 二分 抽屉原理

Problem: 287. 寻找重复数 文章目录 思路复杂度🎈 Code 思路 👨‍🏫 参考题解 复杂度 时间复杂度: O ( N log ⁡ N ) O(N \log{N}) O(NlogN) 空间复杂度: O ( 1 ) O(1) O(1) 🎈 Code class Solution {public int findDu…

ASP.NET Core列表增删改查

前置要求&#xff1a; 1. vueelement-plus实现前端静态页面 HelloWorld.vue <template><h2>hello界面</h2><div class"tableList"><!-- 搜索框 --><el-row :gutter"20"><el-col :span"8"><!-- 搜…

【备战蓝桥杯】今天给大家整点解压的~

【备战蓝桥杯】今天给大家整点解压的~ 蓝桥杯备赛 | 洛谷做题打卡day8 文章目录 【备战蓝桥杯】今天给大家整点解压的~ 蓝桥杯备赛 | 洛谷做题打卡day8[NOIP2017 普及组] 成绩题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 提…

【书生·浦语】大模型实战营——LMDeploy 大模型量化部署实战

大模型部署背景 大模型部署是指将训练好的模型在特定的软硬件环境中启动的过程&#xff0c;使模型能够接收输入并返回预测结果。大模型的内存开销巨大&#xff0c;7B模型仅权重需要14G内存。另外大模型是自回归生成&#xff0c;需要缓存Attention的 k/v。 LMDeploy 简介 推理性…

UE5 UE4 打包报错Failed to compile material 解决

参考&#xff1a;https://forums.unrealengine.com/t/failed-to-compile-material-for-pcd3d_sm5-warning/385087 https://forums.unrealengine.com/t/failed-to-compile-material-for-platform-pcd3d-sm4/436176 报错&#xff1a;Failed to compile Material for platform PC…

基于Java SSM框架实现学生寝室管理系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架实现学生寝室管理系统演示 摘要 寝室管理设计是高校为学生提供第二课堂&#xff0c;而我们所在学院多采用半手工管理学生寝室的方式&#xff0c;所以有必要开发寝室管理系统来对进行数字化管理。既可减轻学院宿舍长工作压力&#xff0c;比较系统地对宿舍通告…

【C#】面向对象的三大特性,还记得吗,简单代码举例回顾

欢迎来到《小5讲堂》 大家好&#xff0c;我是全栈小5。 这是《C#》序列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深对知识点的理解和掌握。…

如何学习three.js

如何学习three.js 前言1. 基础概念场景&#xff08;Scene&#xff09;&#xff1a; three.js中所有物体的容器。你可以把它想象成一个舞台&#xff0c;在这里添加物体、光源等。相机&#xff08;Camera&#xff09;&#xff1a; 决定了哪部分场景会被渲染。最常用的是透视相机&…

Parallel patterns: convolution —— An introduction to stencil computation

在接下来的几章中&#xff0c;我们将讨论一组重要的并行计算模式。这些模式是许多并行应用中出现的广泛并行算法的基础。我们将从卷积开始&#xff0c;这是一种流行的阵列操作&#xff0c;以各种形式用于信号处理、数字记录、图像处理、视频处理和计算机视觉。在这些应用领域&a…

超简单的node爬虫小案例

同前端爬取参数一样&#xff0c;输入三个参数进行爬取 注意点也一样&#xff1a; 注意分页的字段需要在代码里面定制化修改&#xff0c;根据你爬取的接口&#xff0c;他的业务规则改代码中的字段。比如我这里总条数叫total&#xff0c;人家的不一定。返回的数据我这里是data.r…

存内计算技术打破常规算力局限性

目录 前言 关于存内计算 1、常规算力局限性 2、存内计算诞生记 3、存内计算核心 存内计算芯片研发历程及商业化 1、存内计算芯片研发历程 2、存内计算先驱出道 3、存内计算商业化落地 基于知存科技存内计算开发板ZT1的降噪验证 &#xff08;一&#xff09;任务目标以…

linux-部署Samba文件共享服务

linux-部署Samba文件共享服务 1、使用命令安装samba服务和samba客户端 dnf install samba samba-client # 或者 yum install samba samba-client2、配置文件的设置(可提前备份smb.conf) vim /etc/samba/smb.conf [global]workgroup SAMBAsecurity userpassdb backend tdbsam…

芯品荟|电梯外呼面板屏驱市场调研报告

PART ONE 产品简介 - Introduction - 1.电梯外呼面板介绍 电梯外呼面板&#xff0c;用于显示电梯当前位置、运行状态和楼层信息&#xff0c;以便乘客在等待电梯时了解电梯的运行情况。 电梯外呼面板&#xff0c;按显示屏的种类&#xff0c;分为3类&#xff0c;分别是LED屏、L…

Linux Mii management/mdio子系统分析之二 mdio总线-设备-驱动模型分析

Linux Mii management/mdio子系统分析之二 mdio总线-设备-驱动模型分析 &#xff08;转载&#xff09;原文链接&#xff1a;https://blog.csdn.net/u014044624/article/details/123303139 接着上篇文章继续分析mdio子系统&#xff0c;本章主要介绍mdio子系统的驱动模型&#xf…

3.3.2 CSMA/ CD协议

3.3.2 CSMA/ CD协议 CSMA/CD&#xff08;Carrier Sense Multiple Access with Collision Detection&#xff09;&#xff1a;载波监听多点接入/碰撞检测。 检测到碰撞后&#xff1a; 适配器立即停止发送。&#xff08;碰撞点后面的信号会一直叠加&#xff09;等待一段随机时间…

【AI】 AIOTSummary

智能物联网(AIoT)是2018年兴起的概念,指系统通过各种信息传感器实时采集 各类信息(一般是在监控、互动、连接情境下的),在终端设备、边缘域或云中心 通过机器学习对数据进行智能化分析,包括定位、比对、预测、调度等。智能物联网(AIoT)是2018年兴起的概念,指系统通过…