CN104063275A - 一种sata指令的处理方法及装置 - Google Patents
一种sata指令的处理方法及装置 Download PDFInfo
- Publication number
- CN104063275A CN104063275A CN201410304925.5A CN201410304925A CN104063275A CN 104063275 A CN104063275 A CN 104063275A CN 201410304925 A CN201410304925 A CN 201410304925A CN 104063275 A CN104063275 A CN 104063275A
- Authority
- CN
- China
- Prior art keywords
- sata
- instruction
- frame
- state
- sata instruction
- 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.)
- Pending
Links
Landscapes
- Hardware Redundancy (AREA)
Abstract
本发明提供了一种SATA指令的处理方法及装置,包括接收SATA指令后按照Matrix Arbiter算法对SATA指令进行处理。具体地,更新Matrix Arbiter算法中的仲裁矩阵;读取SATA指令的第一帧;判断第一帧是否为PIO Data Tn指令,若为PIO Data In指令,在转发完毕后进入PIOSetupFIS状态,若为其他指令,则进入RegFIS状态;对进入RegFIS状态的SATA指令,等待Register FIS-Device to Host帧,当收到该帧并接收完毕后,返回初始状态;对进入PIOSetupFIS状态的SATA指令,接收完最后一帧,且在该帧E_STATUS域中BSY和DRQ位均为0时,进入DataFIS状态;对进入DataFIS状态的SATA指令,接收最后一个数据帧完毕后,返回初始状态。采用本发明的技术方案,能够实现在分时机制下保证多个SATA指令复用同一实体存储空间。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种SATA指令的处理方法及装置。
背景技术
随着云计算技术的发展,虚拟化技术作为支撑云计算的核心技术,其应用模式已经从最初的服务器整合虚拟化,转变到现在的桌面虚拟化,网络虚拟化,存储虚拟化等等。虚拟化技术在云计算领域的技术价值与应用空间正在不断扩展。
目前现有技术中,多处理器分时复用同一存储空间时,往往不能对不同处理器发出的SATA(Serial Advanced Technology Attachment,串行高级技术附件)指令进行有效区分,这使得不同处理器的SATA指令同时发往同一块硬盘,容易引起一些不可预知的错误,影响存储空间的利用。
现有技术的不足在于:缺乏有效区分不同处理器发出的SATA指令的方法和装置。
发明内容
本发明提供了一种SATA指令的处理方法及装置,用以通过合理的算法对多条SATA指令进行选取。
本发明提供了一种SATA指令的处理方法,包括:
接收多个处理器发送的SATA指令;
根据SATA指令和Matrix Arbiter算法对各SATA指令进行仲裁;
确定仲裁出的SATA指令。
本发明还提供了一种SATA指令的处理装置,包括:
接收模块,用于接收多个处理器发送的SATA指令;
仲裁模块,用于根据SATA指令和Matrix Arbiter算法对各SATA指令进行仲裁;
确定模块,用于确定仲裁出的SATA指令。
本发明的有益效果是:
本发明实施例提供的技术方案中,多处理器分时复用同一存储空间时,接收SATA指令并根据指令和Matrix Arbiter算法对其进行处理,有效区分不同处理器发出的SATA指令,使它们依照一定的规则发往硬盘,进而可实现在分时机制下保证多个SATA指令复用同一实体存储空间,避免了不同处理器的指令同时发往同一块硬盘而带来的不可预知的错误。
附图说明
下面将参照附图描述本发明的具体实施例,其中:
图1为本发明实施例中SATA指令的处理环境示意图。
图2为本发明实施例中SATA指令的处理方法的流程示意图。
图3为本发明实施例中SATA指令的处理装置的结构示意图。
具体实施方式
为了使本发明的技术方案及优点更加清楚明白,以下结合附图对本发明的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本发明的一部分实施例,而不是所有实施例的穷举。
发明人在发明过程中注意到:
目前现有技术中,多处理器分时复用同一存储空间时,往往不能对不同处理器发出的SATA指令进行有效区分,这使得不同处理器的SATA指令同时发往同一块硬盘,容易引起一些不可预知的错误,影响存储空间的利用。
针对上述不足,本发明实施例中提供了一种SATA指令的处理方法及装置,下面进行说明。
为便于理解本发明的实施,下面对实施环境进行简单说明。
图1为本发明实施例中SATA指令的处理环境示意图,如图所示,实施的环境中主要包括至少一个处理器控制器1011、交换器102、以及硬盘控制器103,其中:
各处理器控制器1011,用于分别与其相对应的处理器相连,接收处理器发送的SATA指令,并将其发送至交换器102;
交换器102一端与各处理器控制器1011相连,另一端与硬盘控制器103相连,用于将处理器控制器1011发来的SATA指令逐一发送至硬盘控制器103;
硬盘控制器103,用于与硬盘相连,在接收到交换器102发来的SATA指令时,在SATA指令中指示存储的地址空间后发送至硬盘,其中,所指示的地址空间是分配给发出SATA指令的处理器的地址空间。
各处理器发送SATA指令至其对应的处理器控制器,处理器控制器1011经过一些必要的变换,包括串并转换,8b/10b编码转换、解扰操作、标识、暂存等操作后,待硬盘控制器103空闲时将指令发送至交换器102。交换器102此时若接收到多条SATA指令,则需要按照一定的规则或算法来对需要处理的SATA指令进行选取。将选取的SATA指令发送至硬盘控制器103。硬盘控制器103识别出分配给该处理器的地址空间后,将SATA指令经过一些必要的变换,包括串并转换,8b/10b编码转换、加扰操作等操作后,将指令发送至硬盘。硬盘会返回一个响应结果至处理器。
在明了运用的环境后,对本发明实施例提供的SATA指令的处理方法及装置进行详细说明。
图2为本发明实施例中SATA指令的处理方法的流程示意图,如图所示,可以包括如下步骤:
步骤201、接收多个处理器发送的SATA指令;
步骤202、根据SATA指令和Matrix Arbiter算法对各SATA指令进行仲裁;
步骤203、确定仲裁出的SATA指令。
实施中,在交换器102将SATA指令逐一发送至硬盘控制器103时,对来自不同处理器的SATA指令进行仲裁,可以根据不同处理器的SATA命令请求情况和Matrix Arbiter算法对SATA指令进行仲裁,仲裁出一个处理器,本轮即执行该处理器的SATA命令。
进一步的,SATA指令的处理方法可以包括步骤:
更新Matrix Arbiter算法中的仲裁矩阵;
读取SATA指令的第一帧;
判断第一帧是否为PIO Data In指令,若为PIO Data In指令,在转发完毕后进入PIOSetupFIS状态,若为其他指令,则进入RegFIS状态;
对进入RegFIS状态的SATA指令,等待Register FIS-Device to Host帧,当收到该帧并接收完毕后,返回初始状态;
对进入PIOSetupFIS状态的SATA指令,接收完最后一帧,且在该帧E_STATUS域中BSY和DRQ位均为0时,进入DataFIS状态;
对进入DataFIS状态的SATA指令,接收最后一个数据帧完毕后,返回初始状态;
其中,在返回初始状态时,开始接收多个处理器发送的SATA指令,并进行下一次仲裁。
实施中,初始状态可以为等待接收SATA指令时的状态。
实施中,读取单元读出的SATA指令即为仲裁出来的处理器的SATA指令。
进一步的,确定仲裁出的SATA指令后,可以包括步骤:
将仲裁出的SATA指令发送至硬盘控制器。
实施中,转发完毕是指转发给硬盘控制器完毕。
实施中,接收完最后一帧是指接收硬盘控制器返回的响应指令完毕。
下面结合SATA指令的处理环境对本发明实施例提供的SATA指令的处理方法进行具体说明。
硬盘控制器103预先为各处理器在实体存储空间上分配地址空间。存储控制器包含多个处理器控制器,各处理器控制器与其对应的处理器相连,当处理器控制器1011、处理器控制器1012、处理器控制器1013......处理器控制器101N接收到其对应处理器发来的SATA指令时,首先将SATA指令进行串并转换,8b/10b编码转换以及解扰操作,得到可处理的SATA指令;然后通过打包的方式对SATA指令进行标识,来标记是由哪个处理器发送的SATA指令;其次当硬盘控制器103不空闲时,暂存SATA指令;当硬盘控制器103空闲时,将该SATA指令发送至交换器102;接着,交换器102按照Matrix Arbiter算法对处理器控制器1011、处理器控制器1012、处理器控制器1013......处理器控制器101N发来的SATA指令进行排序,按照该排序顺序逐一发送至硬盘控制器103;然后硬盘控制器103根据标识确定发出SATA指令的处理器的地址空间;通过修改SATA指令的地址域,将其映射到分配给该处理器的地址空间的方式来在SATA指令中指示存储的地址空间;找到存储的地址空间后,将SATA指令进行串并转换,8b/10b编码转换以及加扰操作后发送至硬盘。
硬盘接收到SATA指令后,返回一个响应结果。首先,硬盘控制器103在接收到硬盘发来的响应结果时,将响应结果进行串并转换,8b/10b编码转换以及解扰操作,变为可处理的响应结果;然后通过对这个响应结果中的地址域修改后进行地址反映射,其中,地址映射与地址反映射是一个互为相反的过程;其次对硬盘发送的响应结果进行标识,交换器102根据标识确定接收响应结果的处理器控制器1011;接着,在处理器控制器1011或处理器控制器1012或处理器控制器1013......或处理器控制器101N不空闲时,暂存响应结果,在其空闲时将其发送至交换器102;处理器控制器1011、处理器控制器1012、处理器控制器1013......处理器控制器101N在接收到交换器102发送的响应结果时,将响应结果进行串并转换,8b/10b编码转换以及加扰操作后,将其发送至对应的处理器。至此完成一次完整的交互。
基于同一发明构思,本发明实施例中还提供了一种SATA指令的处理装置,由于该装置的原理与一种SATA指令的处理方法相似,因此该装置的实施可以参见SATA指令的处理方法的实施,重复之处不再赘述。
图3为本发明实施例中SATA指令的处理装置的结构示意图,如图所示,可以包括:
301、接收模块,用于接收多个处理器发送的SATA指令;
302、仲裁模块,用于根据SATA指令和Matrix Arbiter算法对各SATA指令进行仲裁;
303、确定模块,用于确定仲裁出的SATA指令。
进一步的,SATA指令的处理装置还包括更新模块、读取模块、判断模块、第一执行模块、第二执行模块、以及第三执行模块,其中:
更新模块,用于更新Matrix Arbiter算法中的仲裁矩阵;
读取模块,用于读取SATA指令的第一帧;
判断模块,用于判断第一帧是否为PIO Data In指令,若为PIO Data In指令在转发完毕后进入PIOSetupFIS状态,若为其他指令,则进入RegFIS状态;
第一执行模块,用于对进入RegFIS状态的SATA指令,等待Register FIS-Device to Host帧,当收到该帧并接收完毕后,返回初始状态。
第二执行模块,用于对进入PIOSetupFIS状态的SATA指令,接收最后一帧,且在该帧E_STATUS域中BSY和DRQ位均为0时,进入DataFIS状态;
第三执行模块,用于对进入DataFIS状态的SATA指令,接收最后一帧完毕后,返回初始状态;
其中,在返回初始状态时,接收模块开始接收多个处理器发送的SATA指令,并且仲裁模块进行下一次仲裁。
进一步的,确定模块可以用于将仲裁出的SATA指令发送至硬盘控制器。
实施中,第一执行模块转发完毕是指转发给硬盘控制器完毕。
实施中,第二执行模块或第三执行模块接收完最后一帧是指接收硬盘控制器返回的响应指令完毕。
本发明实施例提供的SATA指令的处理方法及装置,根据SATA指令和Matrix Arbiter算法对各SATA指令进行仲裁,仲裁后监控SATA指令的发送和响应过程。保证了在分时机制下保证多个SATA指令复用同一实体存储空间,且避免不同处理器的指令同时发往同一块硬盘而带来的不可预知的错误。
以上实施例仅用以说明本发明的技术方案,而非对其进行限制。因此,在不背离本发明的精神及其实质的情况下,本领域技术人员可作出各种改变、替换和变型。很显然,但这些改变、替换和变型都应涵盖于本发明权利要求的保护范围之内。
Claims (10)
1.一种SATA指令的处理方法,其特征在于,所述方法包括步骤:
接收多个处理器发送的SATA指令;
根据SATA指令和Matrix Arbiter算法对各SATA指令进行仲裁;
确定仲裁出的SATA指令。
2.如权利要求1所述的处理方法,其特征在于,进一步包括:
更新Matrix Arbiter算法中的仲裁矩阵;
读取SATA指令的第一帧;
判断第一帧是否为PIO Data In指令,若为PIO Data In指令,在转发完毕后进入PIOSetupFIS状态,若为其他指令,则进入RegFIS状态;
对进入RegFIS状态的SATA指令,等待Register FIS-Device to Host帧,当收到该帧并接收完毕后,返回初始状态;
对进入PIOSetupFIS状态的SATA指令,接收完最后一帧,且在该帧E_STATUS域中BSY和DRQ位均为0时,进入DataFIS状态;
对进入DataFIS状态的SATA指令,接收最后一个数据帧完毕后,返回初始状态;
其中,在返回初始状态时,开始接收多个处理器发送的SATA指令,并进行下一次仲裁。
3.如权利要求1或2所述的处理方法,其特征在于,确定仲裁出的SATA指令后,进一步包括:
将仲裁出的SATA指令发送至硬盘控制器。
4.如权利要求1或2所述的处理方法,其特征在于,转发完毕是指转发给硬盘控制器完毕。
5.如权利要求1或2所述的处理方法,其特征在于,接收完最后一帧是指接收硬盘控制器返回的响应指令完毕。
6.一种SATA指令的处理装置,其特征在于,包括:
接收模块,用于接收多个处理器发送的SATA指令;
仲裁模块,用于根据SATA指令和Matrix Arbiter算法对各SATA指令进行仲裁;
确定模块,用于确定仲裁出的SATA指令。
7.如权利要求6所述的处理装置,其特征在于,进一步包括:更新模块、读取模块、判断模块、第一执行模块、第二执行模块、以及第三执行模块,其中:
更新模块,用于更新Matrix Arbiter算法中的仲裁矩阵;
读取模块,用于读取SATA指令的第一帧;
判断模块,用于判断第一帧是否为PIO Data In指令,若为PIO Data In指令在转发完毕后进入PIOSetupFIS状态,若为其他指令,则进入RegFIS状态;
第一执行模块,用于对进入RegFIS状态的SATA指令,等待Register FIS-Device to Host帧,当收到该帧并接收完毕后,返回初始状态。
第二执行模块,用于对进入PIOSetupFIS状态的SATA指令,接收最后一帧,且在该帧E_STATUS域中BSY和DRQ位均为0时,进入DataFIS状态;
第三执行模块,用于对进入DataFIS状态的SATA指令,接收最后一帧完毕后,返回初始状态;
其中,在返回初始状态时,接收模块开始接收多个处理器发送的SATA指令,并且仲裁模块进行下一次仲裁。
8.如权利要求6或7所述的处理方法,其特征在于,确定模块进一步用于将仲裁出的SATA指令发送至硬盘控制器。
9.如权利要求6或7所述的处理方法,其特征在于,第一执行模块转发完毕是指转发给硬盘控制器完毕。
10.如权利要求6或7所述的处理方法,其特征在于,第二执行模块或第三执行模块接收完最后一帧是指接收硬盘控制器返回的响应指令完毕。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410304925.5A CN104063275A (zh) | 2014-06-30 | 2014-06-30 | 一种sata指令的处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410304925.5A CN104063275A (zh) | 2014-06-30 | 2014-06-30 | 一种sata指令的处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104063275A true CN104063275A (zh) | 2014-09-24 |
Family
ID=51550998
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410304925.5A Pending CN104063275A (zh) | 2014-06-30 | 2014-06-30 | 一种sata指令的处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104063275A (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1514973A (zh) * | 2001-06-29 | 2004-07-21 | 英特尔公司 | 用于多个读取请求的存储器控制 |
CN101398745A (zh) * | 2007-09-29 | 2009-04-01 | 群联电子股份有限公司 | 并行数据存取架构的固态盘存储系统与固态盘控制器 |
-
2014
- 2014-06-30 CN CN201410304925.5A patent/CN104063275A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1514973A (zh) * | 2001-06-29 | 2004-07-21 | 英特尔公司 | 用于多个读取请求的存储器控制 |
CN101398745A (zh) * | 2007-09-29 | 2009-04-01 | 群联电子股份有限公司 | 并行数据存取架构的固态盘存储系统与固态盘控制器 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101115054B (zh) | 用于网络接口控制器的存储器映射的缓冲器 | |
US10503714B2 (en) | Data placement and sharding | |
US10223126B2 (en) | Out-of-order processor and method for back to back instruction issue | |
CN104050115A (zh) | 一种存储控制器及其使用方法 | |
US9940240B2 (en) | Persistent caching for operating a persistent caching system | |
CN105210041A (zh) | 针对虚拟处理器处理并路由中断 | |
US20180189094A1 (en) | Virtual machine to host device bridging | |
US20120042307A1 (en) | System and method for creating memory interface of computing device | |
KR102064764B1 (ko) | 메시지 시그널 인터럽트의 통신 | |
CN103959267A (zh) | 用于具有多个总线的pcie电桥的中断处理系统及方法 | |
CN109977037B (zh) | 一种dma数据传输方法及系统 | |
US8930715B2 (en) | Address translation unit, device and method for remote direct memory access of a memory | |
KR20200017364A (ko) | PCIe 메모리 요청들의 라우팅을 촉진하기 위해 NVMe 물리적 영역 페이지 목록 포인터들 및 데이터 포인터들을 수정 | |
CN103873489A (zh) | 具有PCIe接口的装置共享系统及方法 | |
JP2022518351A (ja) | 入出力ストア命令をハンドリングする方法、システム、およびプログラム | |
JP2022519985A (ja) | 入出力ストア命令をハンドリングする方法、システム、およびプログラム | |
US9875131B2 (en) | Virtual PCI device based hypervisor bypass using a bridge virtual machine | |
US20160055108A1 (en) | Managing message signaled interrupts in virtualized computer systems | |
CN112106032A (zh) | I/o主设备和cpu之间优化数据共享的有序写存储的高性能流 | |
KR102442682B1 (ko) | 머신 러닝 시스템에서 직렬화된 키 값 접근을 방지하기 위한 시스템 및 방법 | |
CN106484549A (zh) | 一种交互方法、NVMe设备、HOST及物理机系统 | |
JP2022518349A (ja) | 入出力ストア命令をハンドリングする方法、システム、およびプログラム | |
CN104965678A (zh) | 一种固态存储的控制方法、装置及固态存储设备 | |
CN106095528A (zh) | 一种检测虚拟机盘符的方法 | |
JP6974510B2 (ja) | データを処理するための方法、装置、デバイス及び媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20140924 |