13.2 Logical Unit Management
13.2.1 Introduction
该功能旨在提供一种机制,让外部应用程序定义和使用虚拟内存组织,该组织可以轻松地以多种方式适应不同的使用模型。除了对可用的可寻址空间进行分段之外,该机制还引入了通过专用功能和特性,区分每个逻辑单元的可能性。本节描述了配置 UFS 设备的过程:逻辑单元的数量、逻辑单元大小、逻辑单元内存类型等。可以按照之前文章12 UFS SECURITY中的说明配置安全特性。UFS 设备可以组织在不同的逻辑单元中。 每一个都代表一个自治计算实体,具有独立的逻辑地址范围并且可以单独访问。此外,可以为每个逻辑单元定义特定用途并具有特殊属性(即内存类型),以适应不同的 UFS 主机使用模型和操作系统要求。
13.2.2 Logical Unit features
UFS 设备地址空间被组织在几个可由用户配置的内存区域中。 特别地,这样的存储区域被表示为逻辑单元,并且其特征在于它们具有从逻辑地址零开始的独立逻辑可寻址空间。 除了逻辑单元之外,UFS 设备还支持以下well known logical unit用于特定用途:UFS Device, REPORT LUNS, Boot and RPMB。 逻辑单元由 LUN(逻辑单元号)寻址,而well known logical unit由 W-LUN(众所周知的逻辑单元号)寻址。

注 1 该图显示了一个设备配置示例,其中 LU 0 和 LU 1 用作引导逻辑单元,逻辑单元 3、4 和 7 用于代码和数据存储。 LU 1 是引导活动逻辑单元,可以使用 W-LUN = 30h(UPIU 中的 LUN 字段 = B0h)以读取方式访问它。每个逻辑单元在非易失性存储介质上都有一个物理实现
In particular, the UFS device shall support:
 bMaxNumberLU 指定的逻辑单元数。 它们中的每一个都可配置为引导逻辑单元,最多两个。
 一个 RPMB 众所周知的逻辑单元(W-LUN = 44h,UPIU 中的 LUN 字段 = C4h)
可以将两个逻辑单元配置为引导逻辑单元,其中只有一个是活动的并且可以通过Boot well known logical unit (W-LUN = 30h) 读取以执行系统引导(参见 13.1,UFS 引导)。 RPMB 众所周知的逻辑单元是由一个定义良好的安全算法(见 12.4,RPMB)的认证操作访问的。 其他逻辑单元将用于实现其他用例。
Common features of each logical unit are:
 独立的逻辑可寻址空间(从逻辑地址零开始直到逻辑单元大小), 可配置的逻辑单元大小。
每个逻辑单元的大小由分配给它的分配单元的数量决定:配置描述符的dNumAllocUnits 参数值。 dNumAllocUnits 以分配单元大小 (bAllocationUnitSize) 表示。此外,每个逻辑单元的特征在于可以配置的内存类型参数。 用于区分逻辑单元属性的内存类型示例如下:
 默认类型 – 常规内存特性
 系统代码类型——很少更新的逻辑单元(例如,系统文件或二进制代码可执行文件或主机操作系统映像和其他系统数据结构)
 非持久类型——用于临时信息的逻辑单元(例如,交换文件扩展主机虚拟内存空间)
 增强型内存类型 – 供应商特定属性,增强型内存类型的定义是开放的,以便满足不同的需求和供应商特定的实现。
可以为每个逻辑单元配置写保护机制。 写保护功能类型有:
 永久写保护(永久只读)
 上电写保护(写保护可以通过重启或硬件复位事件清除)
RPMB well known logical unit中不提供写保护。
13.2.3 Logical Unit Configuration
The user shall configure the logical units of the UFS device according to the following rules:

 最大逻辑单元数由 bMaxNumberLU 指定。
 一个或两个逻辑单元可以配置为引导逻辑单元。
当 UFS 设备出厂时,只有以下well known logical unit可用:UFS Device, REPORT LUNS and the RPMB。 所有其他逻辑单元都应在可以访问之前进行配置。注意 RPMB 众所周知的逻辑单元将由设备制造商在设备出厂前进行配置。 每个逻辑单元的配置可以通过读取相应的单元描述符来检索。建议在系统制造阶段执行逻辑单元配置。
要启用对逻辑单元的访问,用户应配置单元描述符参数,如下所述:
bLUEnable
bLUEnable 应设置为 01h 以启用逻辑单元。 如果 bLUEnable 等于 00h,则逻辑单元被禁用并且所有单元描述符参数都无关紧要。
 bMemoryType
bMemoryType 应设置为与所需内存类型相对应的值。 Geometry Descriptor 中 的wSupportedMemoryTypes 参数指示设备支持哪些内存类型。
bLogicalBlockSize bLogicalBlockSize 值应遵循以下规则:o ≥ bMinAddrBlockSize × 512, o ≤ bMaxInBufferSize × 512,

o ≤ bMaxOutBufferSize × 512.
为优化设备性能,建议配置逻辑块大小(bLogicalBlockSize)来代表特定逻辑单元内存类型的dOptimalLogicalBlockSize所指示的值。
 dNumAllocUnits
 bBootLunID

bBootLunID 应按如下所述进行设置:
o 00h:如果逻辑单元不是引导逻辑单元,
o 01h:将逻辑单元配置为“Boot LU A”,
o 02h:将逻辑单元配置为“Boot LU B”,
注 01h 值和 02h 值分配给不超过一个逻辑单元。
 bLUWriteProtect
bLUWriteProtect shall be set as described in the following:
o 00h: if the logical unit is not write protected,
o 01h: to configure 上电写保护,
o 02h: to configure 永久写保护.
bDataReliability
bDataReliability 应设置为在对逻辑单元进行写操作期间发生电源故障时配置设备行为:
o 00h:逻辑单元不受保护。 逻辑单元的全部数据可能会由于写操作期间的电源故障而丢失,
o 01h:逻辑单元受到保护。 逻辑单元的数据受到电源故障保护
 bProvisioningType
bProvisioningType shall be set to configure the logical unit provisioning type:
o 00h: to disable thin provisioning,
o 02h: to enable thin provisioning with TPRZ = 0,
o 03h: to enable thin provisioning with TPRZ = 1.

13.3 Logical Block Provisioning
13.3.1 Overview
Logical Block Provisioning是描述逻辑块地址空间和支持逻辑地址空间的物理内存资源之间关系的概念。 UFS 设备中的逻辑单元应该是Full Provisioned LU or a Thin Provisioned LU.
13.3.2 Full Provisioning

Full Provisioning的逻辑单元中的每个 LBA 都被映射。
Full Provisioning的逻辑单元应提供足够的 LBA 映射资源,以包含设备服务器响应 READ CAPACITY 命令所报告的逻辑单元容量的所有逻辑块。设备服务器不应导致Full Provisioning的逻辑单元上的任何 LBA 变为unmapped.Full Provisioning的逻辑单元不支持logical block provisioning management ——即不支持 UNMAP 命令。
13.3.3 Thin Provisioning
Thin Provisioning中,不要求可用的物理内存资源与逻辑地址空间的大小相匹配。Thin Provisioning逻辑单元不需要提供足以包含逻辑单元容量的所有逻辑块的 LBA 映射资源,如设备服务器响应 READ CAPACITY 命令所报告的那样。在UFS设备中,Thin Provisioning的逻辑单元在通过写入配置描述符配置逻辑单元时应为所有可寻址逻辑块提供足够的物理内存资源:READ CAPACITY中报告的LBA数量不得超过可用物理内存块的数量 .物理资源分配的逻辑地址由Logical Block Provisioning Management管理。 Thin Provisioning逻辑单元中的每个 LBA 都应被映射或解除分配。UFS 设备应支持Thin Provisioning逻辑单元,包括:Logical Block Provisioning Management(UNMAP、UNMAP 命令、擦除、丢弃和清除功能,如第 12 章,UFS 安全性中所述。