CN113220238B - 一种通用sas控制器接口实现方法 - Google Patents
一种通用sas控制器接口实现方法 Download PDFInfo
- Publication number
- CN113220238B CN113220238B CN202110549757.6A CN202110549757A CN113220238B CN 113220238 B CN113220238 B CN 113220238B CN 202110549757 A CN202110549757 A CN 202110549757A CN 113220238 B CN113220238 B CN 113220238B
- Authority
- CN
- China
- Prior art keywords
- sas
- request
- list
- register
- target device
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
- G06F3/0676—Magnetic disk device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
- Information Transfer Systems (AREA)
Abstract
本发明提供了一种通用SAS控制器接口实现方法,包括:在SAS控制器中定义编程接口寄存器组,所述编程接口寄存器组包括目标设备列表基地址寄存器、目标设备列表长度寄存器、I/O请求提交寄存器、I/O请求完成寄存器;在***内存中定义编程接口列表,所述编程接口列表包括目标设备列表、I/O请求列表和I/O数据描述表;基于所述编程接口寄存器组和所述编程接口列表,为***软件提供操作SAS控制器的编程接口。本发明支持SAS应用场景下多种协议类型数据通信,统一***编程接口,简化了软件使用方式。
Description
技术领域
本发明属于磁盘读写领域,特别涉及一种通用SAS控制器接口实现方法。
背景技术
SAS(Serial Attached SCSI)即串行连接SCSI接口是新一代的SCSI技术,采用点对点的传输方式,内置数据/命令校验单元,纠错能力强,支持热插拔,具有管脚数量少、数据传输速率快、可靠性高、兼容性好等特性,目前被业界广泛用于存储设备和主机之间主要的I/O接口。
为了完成端到端数据的高速传输,SAS标准协议定义了不同的协议栈层次,实现数据封装、编码以及高速接口物理信号的转换。图1所示为典型的支持SAS标准协议的控制器实现装置,主要组件说明如下:
物理层L1包含8b-10b编解码、BMC编解码、OOB信号的产生和检测、数据边界同步等功能模块,实现端到端物理链路的建立和传输速率的协商。链路层L2用于创建各种原语和地址帧,实现端到端设备的识别、连接管理、速率匹配、时钟补偿、传输层数据CRC生成和校验、数据加扰。端口层L3用于处理传输层数据请求,负责物理端口的选择、连接的管理和SAS帧收发的调度。传输层L4在发送方向将应用层数据按照协议封装成特定格式的SAS帧,接收方向解析收到的远端SAS帧。帧缓冲区L5用于缓冲应用层发送的数据,以及传输层解析后的数据。DMA L6负责主机***存储和SAS控制器的帧缓冲区存储单元之间的数据搬移。控制器接口L7,SAS控制器和主机***之间的交互接口,定义***软件操作SAS控制器的编程方法。
然而,SAS标准协议并未定义控制器接口的实现方法,缺乏统一的***软件编程接口定义。正因如此,不同的控制器设计者通常各自按照私有的方式来定制SAS控制器的使用方式,不同的接口定义差异很大,导致***软件开发流程复杂、可移植性差,各厂商之间的控制器***软件无法兼容。
发明内容
本发明的目的在于提供一种通用SAS控制器接口实现方法,支持SAS应用场景下SSP、SMP以及STP三种协议类型数据通信,统一***编程接口,简化软件使用方式,提升SAS传输效率。所述的通用SAS控制器接口实现方法包括:
在所述SAS控制器中定义编程接口寄存器组,所述编程接口寄存器组包括目标设备列表基地址寄存器、目标设备列表长度寄存器、I/O请求提交寄存器、I/O请求完成寄存器;
在***内存中定义编程接口列表,所述编程接口列表包括目标设备列表、I/O请求列表和I/O数据描述表;
基于所述编程接口寄存器组和所述编程接口列表,为所述***软件提供操作SAS控制器的编程接口。
优选地,所述目标设备列表基地址寄存器用于标识所述目标设备列表的基地址,所述SAS控制器根据所述基地址来获取SAS目标设备描述块的地址信息。
优选地,所述SAS目标设备描述块包含设备类型、连接速率、目标设备索引号和SAS地址字段,以及提供OPAF(Open Address Frame)地址帧的构建信息。
优选地,所述目标设备列表长度寄存器用于定义所述SAS目标设备描述块的数量。
优选地,所述I/O请求提交寄存器用于接收所述***软件提交的SAS I/O请求,并将所述请求发送至SAS控制器。
优选地,所述I/O请求完成寄存器用于接收来自所述SAS控制器的消息,以通知所述***软件已执行完成的SAS I/O请求。
优选地,所述SAS目标设备描述块进一步包括SAS I/O请求列表基地址字段和SASI/O请求列表长度字段,所述SAS I/O请求列表基地址字段表示SAS I/O请求列表在***物理内存中存储的位置;所述SAS I/O请求列表长度字段表示SAS I/O请求列表中I/O请求描述块的数量。
优选地,所述I/O请求描述块包含协议类型、IO请求类型和请求索引号字段,以及多种类型的I/O帧的构建信息。
优选地,所述多种类型的I/O帧包括以下至少一项:SSP命令帧、SSP任务帧、SMP请求帧、SATA PIO命令帧、SATA DMA命令帧,以及SATA FPDMA命令帧。
优选地,所述I/O请求描述块进一步包括I/O数据描述表物理基地址字段和SGL列表长度字段,所述I/O数据描述表物理基地址字段表示当前I/O数据描述表在***内存中存储的物理位置,所述SGL列表长度字段表示SGL列表中表项的数量,所述SGL列表为链表DMA描述符列表。
相比于现有技术,本发明具有以下优点:
通过一组寄存器和内存数据结构,实现了***软件和SAS控制器硬件逻辑的通用交互方法,支持SAS应用场景下多种协议类型数据通信,统一了***软件的编程接口,以增强SAS控制器的通用性,降低了集成复杂度,节省了***软件开发成本。
本发明的其它特征和优点将在随后的说明书中阐述,并且部分地从说明书中变得显而易见,或通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所指出的结构来实现和获取。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单介绍,显而易见地,下面描述中的附图是本发明的某些实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据这些附图获取其他的附图。
图1示出了根据现有技术的支持SAS标准协议的典型控制器实现装置的模块图。
图2示出了根据本发明的通用SAS控制器接口与内存数据的总体架构示意图。
图3示出了根据本发明的SAS目标设备列表存储的SAS目标设备描述块的字段信息示意图。
图4示出了根据本发明的SAS I/O请求列表存储的SAS I/O请求描述块的字段信息示意图。
图5示出了根据本发明的SAS I/O数据描述表存储的I/O请求命令帧的字段信息示意图。
图6示出了根据本发明的I/O数据描述表中命令帧信息字段的PRD描述符结构示意图。
图7示出了根据现有技术的典型SAS存储拓扑结构示意图。
图8示出了根据本发明的***软件在内存中构建SAS目标设备列表和SAS I/O请求列表的过程的流程图。
图9示出了根据本发明的***软件下发I/O请求至特定SAS目标设备的过程流程图。
图10示出了根据本发明的SAS控制器处理I/O请求的过程流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地说明,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获取的所有其他实施例,都属于本发明保护的范围。
如图2所示,本发明提出的通用SAS控制器接口实现方法通过一组寄存器和内存数据结构,定义***软件和SAS控制器硬件逻辑的交互方法,统一***软件的编程接口,以增强SAS控制器的通用性。
首先,本发明在通用SAS控制器接口中增加以下寄存器的定义,包含:
STDLBA(SAS Target Description List Base Address),即SAS目标设备列表基地址寄存器,该地址为64位物理地址,用于标识SAS目标设备列表的物理基地址。SAS控制器根据所述基地址来获取SAS目标设备描述块的地址信息;
STDLL(SAS Target Description List Length),即SAS目标设备列表长度寄存器,用于定义SAS目标设备列表中设备描述块的数量;
SIORS(SAS I/O Request Submission),即SAS I/O请求提交寄存器,***软件通过该寄存器提交新的SAS I/O请求至SAS控制器;
SIORC(SAS I/O Request Completion),即SAS I/O请求完成寄存器,SAS控制器硬件逻辑通过该寄存器通知***软件已经执行完成的SAS I/O请求;
其次,在***内存中同时定义以下关键数据结构,包含:
STDL(SAS Target Description List),即SAS目标设备列表,SAS控制器为下属管理的每个SMP、SSP或STP设备分配一个设备描述块。设备列表长度根据当前设备连接拓扑结构中目标设备数量而动态变化;
SIORL(SAS I/O Request List),即SAS IO请求列表,SAS目标设备列表STDL中每个有效设备对应一个I/O请求列表SIORL,表示SAS控制器和当前目标设备交互的I/O请求。所述I/O请求列表SIORL的长度根据当前目标设备所能支持的最大I/O请求并发数量来确定;
SIODDT(SAS I/O Data Description Table),即SAS I/O数据描述表,其表示SASIO请求交互中相关命令帧内容、应答帧的接收以及数据段信息的来源或存储位置;
其中,SAS目标设备列表STDL在***内存中占用连续的物理地址空间,列表中存储SAS目标设备描述块,最大支持65536个设备。每个描述块的格式和大小是固定的,占用8个Dword,具体字段信息如图3,其中:
V(Valid)为1比特有效位字段(下称V比特),用于标识当前目标设备描述块是否有效;
DT(Device Type)为目标设备类型字段,长度为4比特,表示当前设备描述块所表示的SAS端设备类型,即SMP、SSP还是STP端设备;
MCR(Max Connection Rate)为当前设备支持的最大连接速率字段,长度为4比特;
ICT(Initiator Connection Tag)为目标设备索引号字段,长度16比特,表示当前设备描述块在目标设备列表STDL中的位置;
SIORLL(SAS I/O Request List Length)为目标设备的SAS I/O请求列表SIORL的长度字段,长度为16比特,表示SAS IO请求列表SIORL中I/O请求描述块的数量;
SAS Address为目标设备的SAS物理地址字段,长度64比特;
SIORLBA(SAS I/O Request List Base Address)为目标设备的SAS I/O请求列表基地址字段,长度为64比特,表示SAS I/O请求列表在***物理内存中存储的位置;
rsvd为保留字段;
所述SAS目标设备列表支持Expander、SATA磁盘和SAS磁盘三种设备类型;支持下属SAS目标设备动态热插拔。
其中,所述SAS I/O请求列表SIORL在***内存中占用连续的物理地址空间,列表中存储有当前目标设备的SAS I/O请求描述块。根据SAS协议,每个目标设备最大支持65536个I/O请求并发。I/O请求数据访问支持64比特寻址;兼容SATA协议中的NCQ模式。每个描述块的格式和大小固定,占用8个Dword,具体字段信息如图4,其中:
V(Valid)为1比特有效位,用于标识当前I/O请求描述块是否有效;
PT(Protocol Type)为协议类型字段,长度4为比特,表示当前I/O请求所属的协议,具体含义如下:
a)0h:SMP(Serial Management Protocol,SAS标准的子协议)
b)1h:SSP(Serial SCSI Protocol,SAS标准的子协议)
c)2h:STP(SATA Tunnel Protocol,SAS标准的子协议)
d)其他:保留
RT(Request Type)为当前I/O请求的类型字段,长度为4比特,具体含义如下:
a)0h:SSP Command命令帧
b)1h:SSP Task任务帧
c)2h:SMP Request请求帧
d)3h:STP PIO命令帧
e)4h:STP DMA命令帧
f)5h:STP Non-Data
g)6h:STP FPDMA命令帧
h)其他:保留
C(Command Store Mode)为I/O请求命令存储模式字段,长度为1比特(下称C比特),对SSP和SMP协议有效,表示当前I/O请求命令帧IU(Information Unit,SSP帧的Payload)的存储模式,具体如下:
a)0b0:表示I/O数据描述表的CFIU段存储命令帧IU的内容信息;
b)0b1:表示I/O数据描述表的CFIU段存储命令帧IU的PRD(Physical RegionDescription,物理区域描述)描述符,命令帧IU内容的存储位置通过PRD描述;
R(Response Store Mode)为I/O请求应答存储模式字段,长度为1比特(下称R比特),对SSP和SMP协议有效,表示当前I/O请求的应答帧IU的存储模式,具体如下:
a)0b0:表示接收到的Response信息直接存储在I/O数据描述表的RB段;
b)0b1:表示I/O数据描述表的RB段存储PRD描述符,描述接收到的Response信息的存储位置;
IORT(I/O Request Tag)为I/O请求传输标记字段,长度为16比特,标识当前I/O命令的索引号,即SSP协议中的IPTT(Initiator Port Transfer Tag),或STP协议中的NCQTag(Native Command Queue Tag),并表示当前I/O请求描述块在I/O请求列表中的偏移位置;
CFIUL(Command Frame IU Length)为I/O请求命令帧IU的长度字段,长度为16比特,表示当前I/O请求命令帧IU段的有效数据长度,以字节为单位;
SGEL(Scatter Gather Entry Length)为I/O数据描述表中SGL列表的长度字段,长度为16比特,表示SGL列表中表项的数量;
IOBC(I/OByte Count)为I/O请求数据总长度字段,长度为32比特;
IODTBA(I/O Data Table Base Address)为I/O数据描述表物理基地址字段,长度为64比特,表示当前SAS I/O数据描述表在***物理内存中存储的位置;
rsvd为保留字段;
其中,所述SAS I/O数据描述表SIODDT在***内存中占用连续的物理地址空间,其中存储有I/O请求命令帧的内容信息,并预留空间存储应答帧,采用链表DMA描述列表表示I/O请求交互中数据的存储位置,最大支持65535个表项。I/O数据描述表的格式固定,具体字段信息如图5,其中:
CFIU(Command Frame Information Unit)为命令帧信息字段,长度为8个Dword,其存储当前I/O请求命令帧的内容信息或PRD描述符,根据不同的协议而存储相应的内容,具体如下:
a)对于SSP协议:当SAS I/O请求描述块的C比特为“0”时,所述CFIU字段存储SSPCommand帧或SSP Task帧的IU内容;而当C比特为“1”时,如图6所示,所述CFIU字段存储4个Dword的PRD描述符,表示帧IU的物理地址和长度;
b)对于SMP协议:当SAS I/O请求描述块的C比特为“0”时,所述CFIU字段存储SMPRequest帧的内容信息;而当C比特为“1”时,存储4个Dword的PRD描述符,表示帧内容存储物理地址和长度,如图6所示;
c)对于STP协议:所述CFIU字段存储STP命令的H2D Register FIS;RB(ResponseBuffer)为应答帧缓冲区:长度为24个Dword,用于存储当前I/O请求的应答帧内容信息或PRD描述符,并且根据不同的协议而存储相应的内容,具体如下:
a)对于SSP或SMP协议:当SAS I/O请求描述块的R比特为“0”时,所述应答帧缓冲区存储Response帧IU的前96字节内容;当R比特为“1”时,如图6所示,其存储4个Dword的PRD描述符,表示Response帧存储的物理地址和长度;
b)对于STP协议:所述应答帧缓冲区存储当前I/O交互过程中接收到的非Data类型FIS,各类型FIS存储位置如图5所示:
1)偏移地址20h:D2H Register FIS,5个Dword;
2)偏移地址38h:PIO Setup FIS,5个Dword;
3)偏移地址50h:DMA Setup FIS,7个Dword;
4)偏移地址70h:Set Devices Bits FIS,2个Dword;
SGC(Scatter Gather Context)为SGL上下文字段,长度为4个Dword,在SSP应用场景中,单个SSP Data帧的最大数据长度为1K字节。STP应用场景中,单个Data FIS的最大数据长度为8K字节。I/O请求的数据通常需要多个SSP数据帧或Data FIS传输才能完成。典型地,在同一时刻SAS物理链路通常由多个I/O请求时分复用,不同I/O请求的数据帧交织传输。在I/O请求切换时刻,需要保存当前SGL的上下文信息,确保当前I/O数据传输中断后可持续性。SGC字段进一步包括以下字段:
a)DXA(Data Transfer Address):长度64比特,表示被中断的数据传输物理地址,I/O数据传输恢复后,从该地址继续数据读写;
b)RBC(Remaining Byte Count):长度32比特,表示被中断的链表DMA描述符表项数据段剩余字节数;
c)OFFS(Offset):长度16比特,表示被中断的链表DMA描述符表项位置索引;
d)I:长度1比特,表示当前DXA和RBC定义的传输结束后,是否上报中断给***处理器;
e)L:长度1比特,表示当前DXA和RBC定义的传输是否为I/O请求的最后一笔数据;
SGL(Scatter Gather List)为链表DMA描述符列表字段,最大长度65536表项。单个描述符表项大小4个Dword,参见图5,具体格式进一步包括:
a)DBA:长度64比特,表示当前描述符表项指向的数据段物理基地址;
b)DBC:长度32比特,表示当前描述符表项指向的数据段字节长度;
c)I:长度1比特,表示当前描述符表项数据传输完成后是否触发***中断;
d)L:长度1比特,值为“1”时表示当前描述符表项是SGL列表中最后一项。
本领域技术人员可以理解,上述实施例中描述的字段格式和比特数仅为举例。本领域技术人员可以根据需要,对上述字段的具体封装格式进行显而易见的增加、调整或删除。
在图7所示典型的SAS存储拓扑结构中,SAS控制器通过一级或多级Expander扩展支持大规模磁盘的管理。基于本发明提出的上述通用SAS控制器接口技术,在本发明另一方面,分别从***软件应用和SAS控制器的角度,结合一级Expander连接扩展的场景,描述***软件的示例工作流程和SAS控制器的示例工作流程。
参见图8,示例性的流程图示出了***软件在内存中构建SAS目标设备列表和SASI/O请求列表的过程,包括以下步骤:
步骤S1.1:***软件释放SAS控制器复位信号,使能Expander设备。控制器和Expander的链路层和物理层完成链路识别、速率协商以及IDAF(Identify Address Frame)地址帧的交换;
步骤S1.2:***软件根据SAS控制器接收到的IDAF地址帧,确定物理端口连接设备类型为Expander设备,在***内存中分配8个Dword空间,建立Expander设备描述块0,分配ICT设备编号0,记录SAS物理地址SAS Address、目标设备类型DT、和最大连接速率MCR等信息。设置SAS目标设备列表基地址寄存器STDLBA指向当前Expander设备描述块0的物理基地址,SAS目标设备列表长度寄存器STDLL置位1,表示目标设备列表长度为1;
步骤S1.3:由于SMP I/O请求不支持多命令并发,同一时刻,只允许SAS控制器和Expander设备之间进行一条I/O交互,因此***软件在内存中分配8个Dword空间,建立Expander设备的I/O请求描述块0,设置协议类型字段PT、I/O请求的类型字段RT、I/O请求传输标记字段IORT等字段,更新Expander设备描述块0的目标设备的SAS I/O请求列表基地址字段SIORLBA指向当前I/O请求描述块0的物理基地址;
步骤S1.4:SAS控制器通过发送SMP Discover请求到Expander设备,查询Expander下行端口的状态。由于SMP协议类型的I/O请求无数据帧传输,因此I/O数据描述表中的SGL列表段长度为0,***软件在内存中分配0xA0字节空间,建立Discover命令的I/O数据描述表,构建并执行SMP Discover I/O请求。
步骤S1.5:***软件根据SMP Discover命今的应答信息,确定Expander下行端口连接的SAS目标设备数量;若未连接SAS目标设备,则方法结束,否则进入步骤S1.6;
步骤S1.6:***软件按照Expander上报的SAS目标设备数量,扩充SAS目标设备列表至N+1个描述块。其中,SAS目标设备描述块0为Expander设备,描述块1~N+1对应SAS目标设备0~N;
步骤S1.7:由于典型的SATA磁盘支持最大32命令并发,***软件为每一个SAS目标设备建立I/O请求列表,列表长度为32,总大小32×8个Dword,并更新相应目标设备描述块的SAS I/O请求列表基地址字段SIORLBA指向当前分配的I/O请求列表物理基地址;
步骤S1.8:重复步骤S1.7,直到遍历所有SAS目标设备,依次建立I/O请求列表;
步骤S1.9:***内存结构构建完成。
参见图9,示例性的流程图示出了***软件下发I/O请求至特定SAS目标设备的过程,包括以下步骤:
步骤S2.1:应用存在新的I/O请求,等待下发;
步骤S2.2:***软件遍历目标设备的I/O请求列表,申请空闲可用的I/O请求描述块,即有效位V比特为“0”的I/O请求描述块;
步骤S2.3:判断I/O请求列表是否有空闲的I/O请求描述块可用,若否,返回步骤S2.2继续查询,若是,则进入步骤S2.4;
步骤S2.4:***软件构建I/O数据描述表,填充命令帧信息,按照I/O数据在内存中的分布,构建SGL链表DMA描述列表,并将SGL长度信息记录在I/O请求描述块的SGEL字段;
步骤S2.5:将I/O请求索引信息写入SAS I/O请求提交寄存器SIORS。其中SIORS[31:16]表示I/O目标设备编号,即在I/O目标设备列表中的偏移索引号,SIORS[15:0]表示I/O请求编号,即在I/O请求列表中的偏移索引号;
步骤S2.6:查询SAS I/O请求完成寄存器SIORC,等待I/O请求执行完成。
参见图10,示例性的流程图示出了SAS控制器处理I/O请求的过程,包括以下步骤:
步骤S3.1:SAS控制器完成初始化,***软件在内存中完成I/O目标设备列表和I/O请求列表的构建。SAS控制器等待执行I/O请求;
步骤S3.2:判断SAS I/O请求提交寄存器SIORS是否收到新的I/O请求,若是,则进入步骤S3.3,否则继续判断;
步骤S3.3:SAS控制器根据SAS I/O请求列表基地址字段STDLBA和SAS I/O请求提交寄存器SIORS的信息,获取目标设备描述块的物理基地址,即STDLBA+(SIORS[31:16]×8×4)。SAS控制器读取目标描述块内容信息,构建连接请求地址帧OPAF(Open AddressFrame);
步骤S3.4:根据目标设备描述块中的SIORLBA字段和SIORS寄存器信息获得I/O请求描述块物理基地址,即SIORLBA+(SIORS[15:0]×8×4)。读取I/O请求描述块内容信息,获取协议类型、命令帧类型和存储位置等信息。
步骤S3.5:SAS控制器根据I/O请求描述块中的I/O数据描述表物理基地址字段IODTBA信息,获取I/O数据描述表物理基地址,读取I/O数据描述表CFIU段信息,构建并下发命令帧。在I/O交互过程中,控制器的DMA单元按照存储在链表DMA描述列表SGL所指向的***内存来读取或存储数据帧内容。并将接收到的应答帧信息存储在RB字段;
步骤S3.6:SAS控制器通过SAS I/O请求完成寄存器SIORC,通知***软件I/O请求处理完成。其中SIORC[31:16]表示I/O目标设备编号,SIORC[15:0]表示I/O请求编号。
本发明提出的通用SAS控制器接口实现方法适用于各种拓扑结构的SAS存储***。可以看出,本发明的技术方案对SAS控制器接口实现进行统一定义,并在***软件和SAS控制器两侧对上述接口的工作流程进行了统一的封装,从而可以将通用的SAS控制器的使用方式直接应用于其他上层应用软件中,不再需要应用层重新定义***软件开发流程,也实现了不同应用软件的可移植性。相对于现有技术,本发明能够统一***软件的编程接口,增强SAS控制器的通用性,降低集成复杂度,节省了***软件开发成本。
尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解,其依然可以对前述各实施例所记载的技术方案进行修改,或对其中部分技术特征进行等同替换;而这些修改或替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (8)
1.一种通用SAS控制器接口实现方法,用于实现***软件和SAS控制器的信息交互,其特征在于,包括:
在所述SAS控制器中定义编程接口寄存器组,所述编程接口寄存器组包括目标设备列表基地址寄存器、目标设备列表长度寄存器、I/O请求提交寄存器、I/O请求完成寄存器;
在***内存中定义编程接口列表,所述编程接口列表包括目标设备列表、I/O请求列表和I/O数据描述表;所述目标设备列表用于管理SAS目标设备描述块;所述I/O请求列表用于管理SAS I/O请求描述块;所述I/O数据描述表用于存储SAS I/O请求交互中的命令帧内容、应答帧的接收以及数据段信息的来源或存储位置;
基于所述编程接口寄存器组和所述编程接口列表,为所述***软件提供操作SAS控制器的编程接口;
所述目标设备列表基地址寄存器用于标识所述目标设备列表在***内存中的物理基地址,所述SAS控制器根据所述物理基地址来获取所述SAS目标设备描述块的地址信息;
所述SAS目标设备描述块进一步包括SAS I/O请求列表基地址字段和SAS I/O请求列表长度字段,所述SAS I/O请求列表基地址字段表示SAS I/O请求列表在***物理内存中存储的位置;所述SAS I/O请求列表长度字段表示SAS I/O请求列表中的I/O请求描述块的数量;
所述I/O请求描述块进一步包括I/O数据描述表物理基地址字段,所述I/O数据描述表物理基地址字段表示当前I/O数据描述表在***内存中存储的物理位置。
2.根据权利要求1的通用SAS控制器接口实现方法,其特征在于,所述SAS目标设备描述块包含设备类型、连接速率、目标设备索引号和SAS地址字段,以及提供OPAF(Open AddressFrame)地址帧的构建信息。
3.根据权利要求1的通用SAS控制器接口实现方法,其特征在于,所述目标设备列表长度寄存器用于定义所述SAS目标设备描述块的数量。
4.根据权利要求1的通用SAS控制器接口实现方法,其特征在于,所述I/O请求提交寄存器用于接收所述***软件提交的SAS I/O请求,并将所述请求发送至SAS控制器。
5.根据权利要求1的通用SAS控制器接口实现方法,其特征在于,所述I/O请求完成寄存器用于接收来自所述SAS控制器的消息,以通知所述***软件已执行完成的SAS I/O请求。
6.根据权利要求2的通用SAS控制器接口实现方法,其特征在于,所述I/O请求描述块包含协议类型、I/O请求类型和请求索引号字段,以及多种类型的I/O帧的构建信息。
7.根据权利要求6的通用SAS控制器接口实现方法,其特征在于,所述多种类型的I/O帧包括以下至少一项:SSP命令帧、SSP任务帧、SMP请求帧、SATA PIO命令帧、SATA DMA命令帧,以及SATA FPDMA命令帧。
8.根据权利要求6的通用SAS控制器接口实现方法,其特征在于,所述I/O请求描述块进一步包括SGL列表长度字段,所述SGL列表长度字段表示SGL列表中表项的数量,所述SGL列表为链表DMA描述符列表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110549757.6A CN113220238B (zh) | 2021-05-19 | 2021-05-19 | 一种通用sas控制器接口实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110549757.6A CN113220238B (zh) | 2021-05-19 | 2021-05-19 | 一种通用sas控制器接口实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113220238A CN113220238A (zh) | 2021-08-06 |
CN113220238B true CN113220238B (zh) | 2022-08-09 |
Family
ID=77093640
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110549757.6A Active CN113220238B (zh) | 2021-05-19 | 2021-05-19 | 一种通用sas控制器接口实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113220238B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7509399B1 (en) * | 2003-05-08 | 2009-03-24 | Juniper Networks, Inc. | Programmable communication interface |
CN105988773A (zh) * | 2015-02-10 | 2016-10-05 | 飞思卡尔半导体公司 | 硬件接口组件和用于硬件接口组件的方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101221541B (zh) * | 2007-01-09 | 2011-04-20 | 张立军 | 用于soc的可编程通信控制器 |
US20100257329A1 (en) * | 2009-04-02 | 2010-10-07 | Brucek Khailany | Apparatus and method for loading and storing multi-dimensional arrays of data in a parallel processing unit |
CN106933497B (zh) * | 2015-12-31 | 2020-02-21 | 华为技术有限公司 | 一种基于sas的管理调度装置、***及方法 |
-
2021
- 2021-05-19 CN CN202110549757.6A patent/CN113220238B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7509399B1 (en) * | 2003-05-08 | 2009-03-24 | Juniper Networks, Inc. | Programmable communication interface |
CN105988773A (zh) * | 2015-02-10 | 2016-10-05 | 飞思卡尔半导体公司 | 硬件接口组件和用于硬件接口组件的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113220238A (zh) | 2021-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6073205A (en) | System and method of write posting in a universal serial bus system | |
US6421742B1 (en) | Method and apparatus for emulating an input/output unit when transferring data over a network | |
US6009478A (en) | File array communications interface for communicating between a host computer and an adapter | |
US5860022A (en) | Computer system and method of issuing input/output commands therefrom | |
EP1753190B1 (en) | Method and system for USB re-direct over a network | |
US8374175B2 (en) | System and method for remote direct memory access over a network switch fabric | |
US7640385B2 (en) | Dual-mode bus station and system for communications | |
US5907684A (en) | Independent channel coupled to be shared by multiple physical processing nodes with each node characterized as having its own memory, CPU and operating system image | |
US7200641B1 (en) | Method and system for encoding SCSI requests for transmission using TCP/IP | |
US20130304940A1 (en) | Providing indirect data addressing for a control block at a channel subsystem of an i/o processing system | |
CN101937406B (zh) | 一种VxWorks操作***中实现驱动1394设备的方法和*** | |
CN108701004A (zh) | 一种数据处理的***、方法及对应装置 | |
KR20170043993A (ko) | 인터페이스 제어 메커니즘을 갖는 전자 시스템 및 그것의 동작 방법 | |
CN101150487A (zh) | 一种零拷贝网络报文发送方法 | |
US5987530A (en) | Method for caching data and generating only one read request to read the requested data and additional data in universal serial bus system | |
CN105007329B (zh) | 一种基于PCIe的网络共享存储***及其存储方法 | |
CN112130748A (zh) | 一种数据访问方法、网卡及服务器 | |
CN101840306A (zh) | VxWorks操作***中实现驱动SATA设备的方法和*** | |
WO2023174146A1 (zh) | 卸载卡命名空间管理、输入输出请求处理***和方法 | |
CN100476775C (zh) | 用于总线通信设备的主机控制器以及总线通信设备 | |
KR101559089B1 (ko) | 장치의 컴포넌트들 간에 메모리 자원들을 공유하기 위한 통신 프로토콜 | |
US6529945B1 (en) | Data buffer management between two different systems | |
CN1976310B (zh) | 在网络中通过总线接口进行通信的方法 | |
CN102843435A (zh) | 一种在集群***中存储介质的访问、响应方法和*** | |
CN113220238B (zh) | 一种通用sas控制器接口实现方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |