CN105765484B - 输入输出数据对齐 - Google Patents

输入输出数据对齐 Download PDF

Info

Publication number
CN105765484B
CN105765484B CN201380081119.XA CN201380081119A CN105765484B CN 105765484 B CN105765484 B CN 105765484B CN 201380081119 A CN201380081119 A CN 201380081119A CN 105765484 B CN105765484 B CN 105765484B
Authority
CN
China
Prior art keywords
data
equipment
interface
unjustified
header
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
Application number
CN201380081119.XA
Other languages
English (en)
Other versions
CN105765484A (zh
Inventor
A·瓦苏德万
E·盖斯勒
M·M·米利埃
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN105765484A publication Critical patent/CN105765484A/zh
Application granted granted Critical
Publication of CN105765484B publication Critical patent/CN105765484B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

在本文中描述了用于对计算系统中的未对齐的数据进行处理的技术。所述技术可以包括通过输入/输出(I/O)接口而从I/O设备中接收数据。如果数据未相对于该计算系统对齐,则可以通过在I/O接口处向数据添加值来填充数据,以使得与I/O设备相关联的数据的消费者忽略所添加的值。

Description

输入输出数据对齐
技术领域
概括地说,本公开内容涉及用于对未对齐的数据进行处理的技术。具体地说,本公开内容涉及对在输入/输出接口处所接收到的来自输入/输出设备的、去往计算设备的未对齐的数据进行处理。
背景技术
计算设备可以被配置为从诸如输入/输出(I/O)设备之类的设备中接收数据。I/O设备是可以经由I/O接口与计算设备的平台(包括计算设备处理器、存储器等)进行通信的设备。I/O设备可以包括键盘、鼠标、显示器、网络接口控制器(NIC)、图形处理单元(GPU)等。从I/O设备中所接收到的数据可以去往由计算系统来处理。计算设备可以通过实现将数据划分为均匀大小的区段或“行”的结构来优化其存储器层级。每一“行”是可用于由计算设备来处理的数据的单元。计算系统可以通过将数据区段的地址和大小与行的结构对齐,来组织来自I/O设备的数据。在一些场景中,从I/O设备中所接收到的数据可以去往计算设备存储器中的缓冲器。该存储器可以由提供了对最近使用的存储器区段的高性能存取的高速缓存(被称为高速缓存行)来优化。来自I/O设备的数据可以不在高速缓存行的边界上,或者数据可以不是高速缓存行大小的偶数倍数。该数据被称为“未对齐的数据”。例如,未对齐的数据可以包括所接收到的比给定的高速缓存行大小要小的数据。通过要求执行额外的操作(例如,读取-修改-写入操作)以将新的传入数据与存储器中已有的数据合并,从I/O设备中接收到的未对齐的数据可能增加计算设备的延迟。
附图说明
图1是示出了包括对齐逻辑的计算系统的框图;
图2是示出了经由包括对齐逻辑的I/O接口连接至系统平台的I/O设备的框图;
图3是示出了经由包括分组报头中的对齐指示的I/O接口连接至系统平台的I/O设备的框图;
图4是示出了用于对未对齐的数据进行处理的方法的框图;以及
图5是示出了用于对未对齐的数据进行处理的可替代方法的框图。
本公开和附图通篇使用了相同的数字来引用相同的组件和特征。100系列中的数字指代最初在图1中出现的特征;200系列中的数字指代最初在图2中出现的特征;以此类推。
具体实施方式
概括地说,本公开内容涉及用于对计算系统中的未对齐的数据进行处理的技术。计算系统可以从各种输入/输出(I/O)设备中接收数据。例如,网络接口控制器(NIC)从网络中接收数据,并且经由I/O接口将该数据提供给包括持久存储器单元、处理单元等的计算系统的平台。在一些场景中,当在I/O接口处接收到来自I/O设备的数据时,该数据未关于计算系统存储器系统对齐。例如,计算系统可以从具有64字节的高速缓存行边界的I/O设备中接收数据。然而,如果来自I/O设备的数据是65字节长,则该数据必须写入到两个区段中:64字节的完整行请求和1字节的部分行请求。如在本文中所提及的,未对齐的数据是不是完整行请求而是替代地基于与给定的计算系统相关联的数据对齐结构(例如,高速缓存行的64字节数据对齐结构)的部分行请求。部分请求可以要求执行额外的操作(例如读取-修改-写入(RMW)),其中,高速缓存被要求将部分行请求与计算系统内的存储器进行合并。
在本文中所描述的技术接收未对齐的数据。当数据未对齐时,所述技术通过向数据添加值来填充数据,而不是执行RMW。与给定的I/O设备相关联的软件驱动器被配置为当读取高速缓存中的未对齐的数据时忽略所添加的值,从而避免RMW操作以及与此类操作相关联的任何延时的增加。计算机系统(包括其设备软件)与I/O设备之间的服务合约允许计算系统高效地添加和忽略填充的数据。计算系统是由I/O设备所传输的数据的消费者,其中I/O设备充当生产者。
图1是示出了包括对齐逻辑的计算系统的框图。计算系统100包括具有处理器102、包括非瞬时性计算机可读介质的存储设备104、以及存储器设备106的计算设备101。计算设备101包括设备驱动器108、I/O接口110、以及I/O设备112、114、116。
I/O设备112、114、116可以包括被配置为向I/O接口110提供数据的各种设备,例如包括图形处理单元的图形设备、磁盘驱动器、网络接口控制器(NIC)等。在一些实施例中,I/O设备(例如,I/O设备112)经由网络120被连接至远程设备118,如在图1中所示出的。
I/O设备112、114、116被配置为向I/O接口110提供数据。如上文讨论的,从I/O设备中提供的数据可以未与计算设备101的高速缓存结构对齐。如在本文中所提及的,高速缓存对齐结构是在针对计算机存储器的高速缓存中设置和存取数据的方式,并且可以根据不同的系统而不同。各种类型的高速缓存对齐结构可以包括64字节的高速缓存对齐结构、128字节的高速缓存对齐结构、以及其它高速缓存对齐结构。例如,计算设备101的存储器设备106的高速缓存可以被配置有64字节的高速缓存对齐结构。如在图1中所示出的,存储器106包括高速缓存122,其中高速缓存122具有与存储器设备106中所包含的数据保持一致的多个字节长度的高速缓存行。
在一些实施例中,I/O接口110包括用虚线框124指示的对齐逻辑,其被配置为对从I/O设备112、114、116中所接收到的未对齐的数据进行处理。在一些实施例中,如I/O设备112的虚线框126所指示的,对齐逻辑126被设置在I/O设备内,其中对齐逻辑126用于利用与将在I/O接口110处执行的对未对齐的数据进行填充相关的指令来配置数据分组,如下文更详细地描述的。在任一实施例中,对齐逻辑(124或126之一)至少部分地包括用于对未对齐的数据进行处理的硬件逻辑。在一些实施例中,硬件逻辑是被配置为对从I/O设备中所接收到的未对齐的数据进行处理的集成电路。在一些实施例中,对齐逻辑包括其它类型的硬件逻辑,例如可由处理器、微控制器等执行的程序代码,其中所述程序代码被存储在非瞬时性计算机可读介质中。对未对齐的数据的处理包括,通过向未对齐的数据添加值来填充未对齐的数据,以使得当计算系统组件(例如,驱动器108)将读取所填充的数据内的有效数据时,计算系统组件将忽略所添加的值。I/O接口110可以使用(由图1中的130所指示的)互连的路由特征,以对来自I/O设备的需要对齐的数据业务进行分类。如本文所提及的,互连是被定义为用于宽泛的多种未来的计算和通信平台(例如,外围组件高速互连(PCIe))或者任何其它互连结构技术的通信耦合。在本文所描述的技术中,互连130可以按例如唯一物理链路、虚拟信道、设备ID、或者数据流ID来对数据业务进行分类,以指示应当在I/O接口110处对从唯一标识的源中所接收到的数据执行对齐逻辑。I/O接口110可以被配置有唯一的标识符,以标识计算设备101和I/O设备112之间的服务合约是何时建立的。
计算设备101的处理器102可以是适用于执行所存储的指令的主处理器。处理器102可以是单核处理器、多核处理器、计算集群、或者任何数量的其它配置。处理器102可以被实现为复杂指令集计算机(CISC)或精简指令集计算机(RISC)处理器、x86指令集兼容处理器、多核或者任何其它微处理器或中央处理单元(CPU)。
存储器设备106可以包括随机存取存储器(RAM)(例如,静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、零电容RAM、硅氧化氮氧化硅SONOS、嵌入式DRAM、扩充数据输出RAM、双倍数据速率(DDR)RAM、电阻式随机存取存储器(RRAM)、参数随机存取存储器(PRAM)等)、只读存储器(ROM)(例如,掩模ROM、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)等)、闪速存储器、或者任何其它合适的存储器系统。主处理器102可以通过系统总线128(例如,外围组件互连(PCI)、工业标准架构(ISA)、PCI-Express、NuBus等)连接至包括存储器106、存储设备104、驱动器108、I/O接口110以及I/O设备112、114、116在内的各组件。
图1的框图不旨在指示计算设备101将包括在图1中所示出的所有组件。此外,根据具体的实现的细节,计算设备101可以包括在图1中未示出的任何数量的额外的组件。
图2是示出了经由包括对齐逻辑的I/O接口连接至系统平台的I/O设备的框图。系统平台202可以包括如在上文中参照图1所讨论的存储器单元、存储设备、处理器、包括设备驱动器的系统软件等。系统平台202被配置为通过存储器高速缓存122来使用相干的(coherent)存储器操作。图2的虚线框204表示相干的存储器空间,其中根据系统平台202的数据对齐结构来对来自存储器的数据进行对齐。出于讨论的目的,假设图2中的系统平台202具有64字节的数据对齐结构,尽管也可以实现其它数据对齐结构。虚线框206表示到与系统平台202相关联的I/O接口(例如,图1的I/O接口110)的连接。去往或来自I/O设备的数据传输可以是去往或来自未关于平台存储器高速缓存122对齐的地址的。
如在上文中所讨论的,I/O接口110可以从I/O设备(例如,图2中所示出的网络接口控制器(NIC)208)中接收未对齐的数据。可以在I/O接口110的对齐逻辑124处接收来自NIC208的未对齐的数据。I/O接口110可以被配置为识别唯一的ID(例如I/O设备的总线设备功能(BDF),例如图2中的NIC 208),以使得在将任何未对齐的数据存储在高速缓存122中之前,指导对齐逻辑124以通过添加值来填充未对齐的数据,从而符合针对系统平台202中的存储器高速缓存122的数据对齐结构。在该示例中,高速缓存122包括具有64字节的数据对齐结构的高速缓存行。使用唯一的ID是用于向I/O接口注册I/O设备的一种机制。向I/O接口110注册I/O设备(例如,NIC 208)是建立在上文中参照图1所讨论的对齐服务合约的一部分。
由对齐逻辑124对未对齐的数据进行填充使得运行在计算平台上的系统软件(例如,图2的NIC设备驱动器210)可以被配置为读取未对齐的数据并且忽略所添加的值。在实施例中,驱动器读取未对齐的数据,并且基于I/O接口110和设备驱动器(例如,NIC驱动器210)之间预定义的协议而忽略所添加的值。例如,NIC 208可以向I/O接口110提供65字节的数据。由于根据该示例中的高速缓存122的数据对齐结构,高速缓存行是64字节长,因此前64字节的数据被存储在高速缓存122中。额外的1字节的数据由对齐逻辑利用所添加的值(例如,零)来填充,以填入另外63字节的数据。NIC驱动器210和I/O接口110之间的协议使得NIC驱动器210能够读取数据的第一字节并且忽略63字节的所添加的值,而不需要执行RMW操作来将高速缓存与存储器106进行同步。
应当注意的是,对齐不受限于高速缓存行的大小。在实施例中,对齐逻辑124根据对于系统平台的给定的数据对齐结构最大可接受的对齐粒度(例如,高速缓存行大小粒度、页大小粒度等)来填充数据。
图3是示出了经由包括分组报头中的对齐指示的I/O接口而连接至系统平台的I/O设备的框图。如在上文中参照图2所讨论的,系统平台202可以被配置在具有64字节的高速缓存对齐结构的一致存储器空间204内,尽管可以实现其它的数据对齐结构。虚线框206示出了到与系统平台202相关联的I/O接口(例如,图1的I/O接口110)的连接。去往或来自I/O设备的数据传输可以去往或来自未关于平台存储器高速缓存122对齐的地址。
在一些实施例中,I/O设备(例如,图3中所示出的NIC 302)提供数据分组304的报头内的对齐数据。分组304包括诸如控制报头块306、地址块308、以及数据块310之类的块。通常,分组报头包括标识了数据的有效长度而不考虑对齐的网络报头。在本文所讨论的实施例中,控制报头块306包括对齐数据312,如在图3中所示出的。在该实施例中,I/O设备(例如,NIC 302)包括对齐逻辑126,其被配置为将对齐数据312包括在控制报头块306内。对齐数据312向I/O接口110指示数据分组304包含未对齐的数据,以使得I/O接口110经由对齐逻辑124来填充数据。在该场景下,对齐数据312被嵌入到数据分组304内,以使得对齐数据312由I/O接口110来处理并且推断填充可以发生以及期望的对齐。在一些实施例中,在不具有对齐逻辑124的I/O接口110处通过I/O接口的合适的配置来处理分组304内的对齐数据312的实现,以解释对齐数据312。
图4是示出了用于对未对齐的数据进行处理的方法的框图。在框402处,在输入/输出(I/O)接口的高速缓存处从I/O设备中接收数据。在框404处填充未对齐的数据,以使得与I/O设备相关联的驱动器忽略所添加的值。
在一些实施例中,执行填充而不执行RMW操作。换句话说,I/O接口用与I/O设备相关联的驱动器以及访问所填充的数据的计算系统的软件所忽略的值来填充数据,而不是接收未对齐的数据并针对未对齐的数据执行RMW。在一些实施例中,基于在I/O设备和驱动器之间所建立的合约而忽略所添加的值。合约可以实现为逻辑,其至少部分地包括硬件逻辑、固件、软件或者其任意组合,以使得当用所忽略的添加的值来填充未对齐的数据时,可以读取未对齐的数据的有效字节。在一些实施例中,由从I/O设备提供的分组报头中的长度字段来指示所接收到的数据的有效字节。
图5是示出了用于对未对齐的数据进行处理的可替代的方法的框图。如在上文中关于图3所讨论的,在一些实施例中,在框502处,在I/O接口处通过将数据作为分组序列而传输的互连来接收数据。每个分组包括报头区段和数据区段。在框504处,报头指示未对齐的数据在I/O接口处被填充,以使得在框506处,响应于报头中的指示而执行填充。在该实施例中,在向I/O接口提供分组之前,在I/O设备处配置分组报头。
在本文中所描述的实施例中,经由互连结构架构而将数据提供给去往或来自I/O设备的I/O接口或者从该I/O接口提供数据。一种互连结构架构包括外围组件互连(PCI)快速(PCIe)架构。PCIe的主要目标是使得来自不同供应商的组件和设备能够在开放架构中相互操作,从而跨越多个细分市场:客户端(桌面和移动客户端)、服务器(标准和企业服务器)、以及嵌入式和通信设备。PCI快速是被定义用于多种未来的计算和通信平台的高性能通用的互连。一些PCI属性(例如,PCI的使用模型、加载-存储架构、以及软件接口)已经通过其修订来维护,而先前的并行总线实现已被高度可缩放的完全串行接口替代。PCI快速的较新版本利用点对点互连、基于交换机的技术、以及分组化协议中的改进,来提供新级别的性能和特征。功率管理、服务质量(QoS)、热插拔/热切换支持、数据完整性、以及错误处理是PCI快速所支持的高级特征中的一些特征。
参照图6,示出了由对一组组件进行互连的点对点链路构成的结构的实施例。系统600包括处理器605和系统存储器610,其中处理器605和系统存储器610耦合至控制器集线器615。处理器605包括任何处理元件,例如微处理器、主机处理器、嵌入式处理器、协同处理器、或者其它处理器。处理器605通过前侧总线(FBS)606耦合至控制器集线器615。在一个实施例中,FSB 606是如下面所描述的串行点对点互连。在另一个实施例中,链路606包括与不同的互连标准兼容的串行、差分互连架构。
系统存储器610包括任何存储器设备,例如,随机存取存储器(RAM)、非易失性(NV)存储器、或者可由系统600中的设备存取的其它存储器。系统存储器610通过存储器接口616耦合至控制器集线器615。存储器接口的示例包括双倍数据速率(DDR)存储器接口、双通道DDR存储器接口、以及动态RAM(DRAM)存储器接口。
在一个实施例中,控制器集线器615是外围组件互连快速(PCI或PCIe)互连层级中的根集线器、根联合体、或者根控制器。控制器集线器615的示例包括芯片组、存储器控制器集线器(MCH)、北桥、互连控制器集线器(ICH)、南桥、以及根控制器/集线器。通常,术语芯片组是指两个物理上分离的控制器集线器,即,耦合至互连控制器集线器(ICH)的存储器控制器集线器(MCH)。应当注意的是,现有系统通常包括与处理器605集成的MCH,而控制器615以类似于以下所描述的方式而与I/O设备进行通信。在一些实施例中,通过根联合体615可选地支持对等路由。
这里,控制器集线器615通过串行链路619耦合至交换机/桥接器620。输入/输出模块617和621(还可以被称为接口/端口617和621)包括/实现分层协议栈,以在控制器集线器615和交换机620之间提供通信。在一个实施例中,多个设备能够耦合至交换机620。
交换机/桥接器620交换机/桥接器620将分组/消息从设备625向上游(即,沿层级向上朝向根联合体)路由至控制器集线器615,以及从处理器605或系统存储器610向下游(即,沿层级向下远离根控制器)路由至设备625。在一个实施例中,交换机620是指多个虚拟的PCI到PCI桥接设备的逻辑组件。设备625包括用于耦合至电子系统的任何内部或外部设备或组件,例如I/O设备、网络接口控制器(NIC)、插入卡、音频处理器、网络处理器、硬盘驱动器、存储设备、CD/DVD ROM、监视器、打印机、鼠标、键盘、路由器、便携式存储设备、火线设备、通用串行总线(USB)设备、扫描仪、以及其它输入/输出设备。通常在诸如设备之类的PCIe中的日常用语是指端点。尽管没有具体地示出,但是设备625可以包括PCI到PCI/PCI-X桥接器以支持旧有或其它版本PCI设备。PCIe中的端点设备通常被分类成旧有、PCIe或者根联合体集成端点。
图形加速器630也通过串行链路632耦合至控制器集线器615。在一个实施例中,图形加速器630耦合至MCH,其中MCH耦合至ICH。交换机620并且由此I/O设备625接着耦合至ICH。I/O模块631和618也用于实现分层协议栈,以在图形加速器630和控制器集线器615之间通信。类似于上文中的MCH讨论,图形控制器或者图形加速器630本身可以被集成在处理器605中。
转到图7,示出了分层协议栈的实施例。分层协议栈700包括任何形式的分层通信栈,例如快速路径互连(QPI)栈、PCIe栈、下一代高性能计算互连栈、或者其它分层栈。尽管紧接地以下参照图6-图9的讨论是关于PCIe栈的,但是相同的概念可以应用于其它互连栈。在一个实施例中,协议栈700是包括事务层705、链路层710和物理层720的PCIe协议栈。接口(例如,图6中的接口617、618、621、622、626和631)可以被表示为通信协议栈700。作为通信协议栈的代表还可以被称为实现/包括协议栈的模块或接口。
PCI快速使用分组在组件之间传送信息。分组形成在事务层705和数据链路层710中,以将信息从发送组件带到接收组件。随着所发送的分组流动通过其它层,它们被扩展有在这些层处对分组进行处理所需要的额外信息。在接收侧,进行逆处理,并且分组从它们的物理层720表示变换为数据链路层710代表,并且最终(针对事务层分组)变换为可以由接收设备的事务层705进行处理的形式。
事务层
在一个实施例中,事务层705用于提供设备的处理内核和互连架构(例如,链路层710和物理层720)之间的接口。在该方面,事务层705的主要责任是对分组(即,事务层分组或TLP)的组装和分解。事务层705通常管理TLP的基于信用的流控制。PCIe实现拆分事务,即,具有按时间分开的请求和响应的事务,从而允许链路在目标设备收集用于响应的数据时携带其它业务。
另外,PCIe利用基于信用的流控制。在该方案中,设备通告针对事务层705中的接收缓冲器中的每个缓冲器的初始信用量。在链路的对端处的外部设备(例如,图6中的控制器集线器615)计数每个TLP所消耗的信用数量。如果事务不超过信用极限,则可以发送该事务。在接收到响应时,恢复信用量。信用方案的优点是,假设没有遇到信用极限,则信用返回的延迟不影响性能。
在一个实施例中,四个事务地址空间包括配置地址空间、存储器地址空间、输入/输出地址空间、以及消息地址空间。存储器空间事务包括用于向存储器映射的位置传输数据/从存储器映射的位置传输数据的读取请求和写入请求中的一个或多个。在一个实施例中,存储器空间事务能够使用两个不同的地址格式,例如短地址格式(例如32位地址)或者长地址格式(例如64位地址)。配置空间事务用于访问PCIe设备的配置空间。到配置空间的事务包括读取请求和写入请求。消息空间事务(或者仅消息)被定义为支持PCIe代理之间的带内通信。
因此,在一个实施例中,事务层705组装分组报头/有效载荷706。在PCIe规范网站处的PCIe规范中可以找到针对现有的分组报头/有效载荷的格式。如在上文中所讨论的,在一个实施例中,分组报头被配置有配置指令,以使得分组内的数据未对齐并且在I/O接口处被填充。
快速参照图8,示出了PCIe事务描述符的实施例。在一个实施例中,事务描述符800是用于携带事务信息的机制。在该方面,事务描述符800支持系统中的事务的标识。其它潜在的使用包括跟踪默认事务排序的修改以及事务与信道的关联。
事务描述符800包括全局标识符字段802、属性字段804、以及信道标识符字段806。在所示出的示例中,全局标识符字段802被描述为包括局部事务标识符字段808和源标识符字段810。在一个实施例中,全局事务标识符802对于所有未完成的请求是唯一的。
根据一个实现,局部事务标识符字段808是由请求代理所生成的字段,并且其对于需要针对该请求代理而完成的所有未完成的请求是唯一的。此外,在该示例中,源标识符810唯一地标识PCIe层级内的请求方代理。因此,局部事务标识符808字段与源ID 810一起提供了层级域内的事务的全局标识。
属性字段804指定事务的特性和关系。在该方面,属性字段804潜在地用于提供允许修改对事务的默认处理的额外信息。在一个实施例中,属性字段804包括优先级字段812、保留字段814、排序字段816、以及无窥探(non-snoop)字段818。这里,可以由发起者对优先级子字段812进行修改,以向事务分配优先级。保留属性字段814被保留以供未来使用或者厂商定义的使用。可以使用保留的属性字段来实现使用优先级或安全性属性的可能的使用模型。
在该示例中,排序属性字段816用于提供传达可以修改默认排序规则的排序类型的可选的信息。根据一个示例性实现,排序属性“0”表示将应用默认排序规则,其中排序属性“1”表示松散排序,其中写入可以在相同方向上传递写入,并且读取完成可以在相同方向上传递写入。窥探属性字段818用于确定事务是否被窥探。如所示出的,信道ID字段806标识了事务所关联的信道。
链路层
链路层710(也被称为数据链路层710)充当事务层705和物理层720之间的中间级。在一个实施例中,数据链路层710的责任是提供用于在链路的两个组件之间交换事务层分组(TLP)的可靠的机制。数据链路层710的一侧接受由事务层705所组装的TLP,应用分组序列标识符711(即,标识号或分组号),计算并应用错误检测码(即,CRC 712),并将经修改的TLP提交至物理层720以用于跨越物理层传输至外部设备。
物理层
在一个实施例中,物理层720包括逻辑子块721和电气子块722,以将分组物理地发送至外部设备。这里,逻辑子块721负责物理层721的“数字”功能。在该方面,逻辑子块包括:用于准备传出信息以用于由物理子块722传输的发送部分;以及用于在将所接收到的信息传递至链路层710之前标识并准备所接收到的信息的接收机部分。
物理块722包括发射机和接收机。逻辑子块721向发射机提供符号,发射机对符号串行化并将其发送到外部设备上。从外部设备向接收机提供串行化的符号,并且将接收到的信号变换为比特流。对比特流解串行化并且提供给逻辑子块721。在一个实施例中,采用8b/10b传输码,其中发送/接收10比特符号。这里,使用特殊符号来用帧723对分组进行组帧。另外,在一个示例中,接收机还提供从传入串流中所恢复的符号时钟。
如上所述,尽管参照PCIe协议栈的具体的实施例讨论了事务层705、链路层710和物理层720,但是分层协议栈不限于此。实际上,任何分层协议栈都可以被包括/实现。作为示例,被表示为分层协议栈的端口/接口包括:(1)用于组装分组的第一层(即,事务层);用于将分组序列化的第二层(即,链路层);以及用于发送分组的第三层(即,物理层)。作为具体的示例,利用通用标准接口(CSI)分层协议。
接着参照图9,示出了PCIe串行点对点结构的实施例。尽管示出了PCIe串行点对点链路的实施例,但是串行点对点链路不限于此,因为其包括用于发送串行数据的任何传输路径。在所示出的实施例中,基本PCIe链路包括两个低电压的、差分驱动的信号对:发送对906/911和接收对912/907。从而,设备905包括用于将数据发送至设备910的发送逻辑906,以及用于从设备910中接收数据的接收逻辑907。换句话说,在PCIe链路中包括两个发送路径(即,路径916和917)和两个接收路径(即,路径918和919)。
传输路径是指用于传输数据的任何路径,例如传输线、铜线、光学线路、无线通信信道、红外通信链路、或者其它通信路径。两个设备(例如,设备905和设备910)之间的连接被称为链路,例如链路415。链路可以支持一条通道——每条通道表示一组差分信号对(一对用于传输,一对用于接收)。为了扩展带宽,链路可以聚合用xN表示的多条通道,其中N是所支持的任何链路宽度,例如1、2、4、8、12、16、32、64或更宽。
差分对是指用于传输差分信号的两个传输路径,例如线路416和417。作为示例,当线路416从低电平转换为高电平(即,上升边缘)时,线路417从高逻辑电平驱动到低逻辑电平(即,下降边缘)。差分信号潜在地展示了更好的电特性,例如更好的信号完整性,即,交叉耦合、电压过冲/下冲、振铃等。这允许实现更快传输频率的更好的时序窗口。
实施例是实现或示例。说明书中提到“实施例”、“一个实施例”、“一些实施例”、“各个实施例”、或者“其它实施例”意指结合实施例所描述的特定特征、结构或特性包括在本发明的技术中的至少一些实施例中,但不一定所有实施例中。出现的各种“实施例”、“一个实施例”或者“一些实施例”非必须都是指代相同的实施例。
不是本文所描述和示出的所有组件、特征、结构、特性等都需要被包括在一个或多个特定的实施例中。如果说明书陈述了例如“可以”、“可能”、“能够”或“可”包括组件、特征、结构或特性,则不要求包括该特定组件、特征、结构或特性。如果说明书或权利要求提到“一”或“一个”元件,则这并不意指仅存在一个元件。如果说明书或权利要求提到“额外的”元件,则不排除存在多于一个额的外元件。
应当注意的是,尽管已经参照特定的实现描述了一些实施例,但是根据一些实施例,其它实现是可能的。另外,在附图中所示出和/或在本文中所描述的电路元件或其它特征的设置和/或顺序不需要以所示出和所描述的特定方式来设置。根据一些实施例,许多其它布置是可能的。
在附图中所示出的每个系统中,在一些情况下,元件每个都可以具有相同的附图标记或者不同的附图标记以暗示所表示的元件可以是不同和/或类似的。然而,元件可以足够灵活以具有不同的实现并且与在本文中所示出或所描述的系统中的一些或所有系统一起工作。在附图中所示出的各种元件可以是相同或不同的。哪个元件被称为第一元件以及哪个元件被称为第二元件是任意的。
应当理解的是,前述示例中的具体细节可以用于一个或多个实施例中的任何地方。例如,在上文中所描述的计算设备的所有可选的特征还可以针对在本文中所描述的方法或计算机可读介质中的任一种来实现。此外,尽管本文可以使用流程图和/或状态图来描述实施例,但是所述技术不限于这些图或者本文中的对应的描述。例如,流程不需要移动通过每个所示出的框或状态,或者按照在本文中所示出和描述的完全相同顺序。
本发明的技术不限制于在本文中所列出的特定的细节。实际上,从本公开内容中得益的本领域技术人员将意识到,可以根据前述描述和附图而在本发明的技术的范围内进行许多其它变型。从而,以下是包括限定了本发明的技术的范围的对其的任何修改的权利要求。

Claims (33)

1.一种对计算系统中的未对齐的数据进行处理的方法,包括:
通过输入/输出(I/O)接口从I/O设备中接收数据;以及
如果所述数据未对齐,则通过在所述I/O接口处向所述数据添加值来填充所述数据,以使得与所述I/O设备相关联的所述数据的消费者忽略所添加的值,
其中,(a)所述数据在所述I/O接口处在包括报头的分组中被接收,所述方法包括在所述报头中指示未对齐的数据能够在所述I/O接口处被填充,并且其中,所述填充是响应于所述报头中的所述指示而被执行的,或者(b)所述I/O接口被配置为识别所述I/O设备的唯一标识符,所述方法包括通过所述I/O设备的所述唯一标识符指示未对齐的数据能够在所述I/O接口处被填充,其中,所述填充是对通过所述I/O设备的所述唯一标识符的指示做出响应而执行的。
2.根据权利要求1所述的方法,其中,执行所述填充而不需要执行针对所述未对齐的数据的读取-修改-写入操作。
3.根据权利要求1或2所述的方法,其中,所述I/O设备的所述唯一标识符是由所述I/O设备提供的。
4.根据权利要求1或2所述的方法,其中,所述报头在所述I/O设备处被配置为指示未对齐的数据能够被填充。
5.根据权利要求4所述的方法,其中,所述报头在将所述分组提供至所述I/O接口之前在所述I/O设备处被配置。
6.根据权利要求1或2所述的方法,其中,所述消费者基于所述消费者与所述I/O接口之间预先定义的合约来忽略所添加的值。
7.根据权利要求1或2所述的方法,包括:基于所述数据中的长度字段来确定所接收到的数据的有效字节。
8.根据权利要求1或2所述的方法,其中,高速缓存与对齐粒度相关联,所述对齐粒度包括:
高速缓存行边界粒度;
页边界粒度;
可配置粒度;或者
其任意组合。
9.根据权利要求1或2所述的方法,其中,所述数据未关于与所述I/O接口相关联的计算系统存储器对齐。
10.一种计算系统,包括:
用于从输入/输出(I/O)设备中接收数据的I/O接口;以及
逻辑,其至少部分地包括所述I/O接口的硬件逻辑,用于:
如果所述数据未对齐,则通过在所述I/O接口处向所述数据添加值来填充所述数据,以使得与所述I/O设备相关联的所述数据的消费者忽略所添加的值,
其中,(a)所述数据在所述I/O接口处在包括报头的分组中被接收,所述系统包括所述I/O设备的逻辑,所述逻辑至少部分地包括硬件逻辑,并且所述逻辑用于在所述报头中指示未对齐的数据能够在所述I/O接口处被填充,并且其中,所述填充是响应于所述报头中的所述指示而被执行的,或者(b)所述I/O接口被配置为识别所述I/O设备的唯一标识符,所述I/O设备的所述唯一标识符指示未对齐的数据能够在所述I/O接口处被填充,其中,用于填充的单元被配置为对通过所述I/O设备的所述唯一标识符的指示做出响应来填充所述数据。
11.根据权利要求10所述的计算系统,其中,执行所述填充而不需要执行针对所述未对齐的数据的读取-修改-写入操作。
12.根据权利要求10或11所述的计算系统,其中,所述I/O设备被配置为提供所述I/O设备的所述唯一标识符。
13.所述权利要求12所述的计算系统,其中,所述报头在所述I/O设备处被配置为指示未对齐的数据能够被填充。
14.根据权利要求13所述的计算系统,其中,所述报头在将所述分组提供至所述I/O接口之前在所述I/O设备处被配置。
15.根据权利要求10或11所述的计算系统,其中,所述消费者基于所述消费者与所述I/O接口之间预先定义的合约来忽略所添加的值。
16.根据权利要求10或11所述的计算系统,其中,驱动器基于所述数据中的长度字段来确定所接收到的数据的有效字节。
17.根据权利要求10或11所述的计算系统,其中,高速缓存与对齐粒度相关联,所述对齐粒度包括:
高速缓存行边界粒度;
页边界粒度;
可配置粒度;或者
其任意组合。
18.根据权利要求10或11所述的计算系统,其中所述数据未关于与所述I/O接口相关联的计算系统存储器对齐。
19.一种计算设备,包括:
用于从输入/输出(I/O)设备中接收未对齐的数据的I/O接口;以及
逻辑,其至少部分包括所述I/O接口的硬件逻辑,用于在所述I/O接口处向所述未对齐的数据添加值,以使得与所述I/O设备相关联的所述数据的消费者忽略所添加的值,
其中,(a)所述数据在所述I/O接口处在包括报头的分组中被接收,所述I/O接口包括所述I/O设备的逻辑,所述逻辑至少部分地包括硬件逻辑,并且所述逻辑用于在所述报头中指示未对齐的数据能够在所述I/O接口处被填充,并且其中,所述填充是响应于所述报头中的所述指示而被执行的,或者(b)所述I/O接口被配置为识别所述I/O设备的唯一标识符,所述I/O设备的所述唯一标识符指示未对齐的数据能够在所述I/O接口处被填充,其中,用于填充的单元被配置为对通过所述I/O设备的所述唯一标识符的指示做出响应来填充所述数据。
20.根据权利要求19所述的计算设备,其中,所述I/O设备用于向所述计算设备传输数据以供处理。
21.根据权利要求19所述的计算设备,其中,所述值被添加而不需要执行针对所述未对齐的数据的读取-修改-写入操作。
22.根据权利要求19或20所述的计算设备,其中,所述消费者基于所述消费者与所述I/O接口之间预先定义的合约而忽略所添加的值。
23.一种对计算系统中的未对齐的数据进行处理的装置,包括:
用于通过输入/输出(I/O)接口从I/O设备中接收数据的单元;以及
用于如果所述数据未对齐,则通过在所述I/O接口处向所述数据添加值来填充所述数据,以使得与所述I/O设备相关联的所述数据的消费者忽略所添加的值的单元,
其中,(a)所述数据在所述I/O接口处在包括报头的分组中被接收,且在所述报头中指示未对齐的数据能够在所述I/O接口处被填充,并且其中,所述填充是响应于所述报头中的所述指示而被执行的,或者(b)所述I/O接口被配置为识别所述I/O设备的唯一标识符,且通过所述I/O设备的所述唯一标识符指示未对齐的数据能够在所述I/O接口处被填充,其中,所述填充是对通过所述I/O设备的所述唯一标识符的指示做出响应而执行的。
24.根据权利要求23所述的装置,其中,执行所述填充而不需要执行针对所述未对齐的数据的读取-修改-写入操作。
25.根据权利要求23或24所述的装置,其中,所述I/O设备的所述唯一标识符是由所述I/O设备提供的。
26.根据权利要求23或24所述的装置,其中,所述报头在所述I/O设备处被配置为指示未对齐的数据能够被填充。
27.根据权利要求26所述的装置,其中,所述报头在将所述分组提供至所述I/O接口之前在所述I/O设备处被配置。
28.根据权利要求23或24所述的装置,其中,所述消费者基于所述消费者与所述I/O接口之间预先定义的合约来忽略所添加的值。
29.根据权利要求23或24所述的装置,包括:用于基于所述数据中的长度字段来确定所接收到的数据的有效字节的单元。
30.根据权利要求23或24所述的装置,其中,高速缓存与对齐粒度相关联,所述对齐粒度包括:
高速缓存行边界粒度;
页边界粒度;
可配置粒度;或者
其任意组合。
31.根据权利要求23或24所述的装置,其中,所述数据未关于与所述I/O接口相关联的计算系统存储器对齐。
32.一种对计算系统中的未对齐的数据进行处理的装置,包括:
存储器,其上存储有指令;以及
处理器,其通信地耦合到所述存储器,所述指令在由所述处理器执行时使得所述处理器执行根据权利要求1-9中的任意一项所述的方法。
33.一种非暂时性计算机可读存储介质,其上存储有指令,所述指令在由计算设备执行时使得所述计算设备执行根据权利要求1-9中的任意一项所述的方法。
CN201380081119.XA 2013-12-23 2013-12-23 输入输出数据对齐 Active CN105765484B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/077577 WO2015099676A1 (en) 2013-12-23 2013-12-23 Input output data alignment

Publications (2)

Publication Number Publication Date
CN105765484A CN105765484A (zh) 2016-07-13
CN105765484B true CN105765484B (zh) 2019-04-09

Family

ID=53479351

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380081119.XA Active CN105765484B (zh) 2013-12-23 2013-12-23 输入输出数据对齐

Country Status (8)

Country Link
US (1) US20160350250A1 (zh)
EP (1) EP3087454A4 (zh)
JP (1) JP6273010B2 (zh)
KR (1) KR101865261B1 (zh)
CN (1) CN105765484B (zh)
BR (1) BR112016011256B1 (zh)
DE (1) DE112013007700T5 (zh)
WO (1) WO2015099676A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10437667B2 (en) * 2016-03-29 2019-10-08 International Business Machines Corporation Raid system performance enhancement using compressed data
US9760514B1 (en) * 2016-09-26 2017-09-12 International Business Machines Corporation Multi-packet processing with ordering rule enforcement
US10795836B2 (en) * 2017-04-17 2020-10-06 Microsoft Technology Licensing, Llc Data processing performance enhancement for neural networks using a virtualized data iterator
US10372603B2 (en) * 2017-11-27 2019-08-06 Western Digital Technologies, Inc. Handling of unaligned writes
JP2023027970A (ja) 2021-08-18 2023-03-03 キオクシア株式会社 メモリシステム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1173931A (zh) * 1995-09-01 1998-02-18 菲利浦电子北美公司 处理器的定制的基本操作的方法与设备
TW200632666A (en) * 2004-11-02 2006-09-16 Standard Microsyst Smc Hardware supported peripheral component memory alignment method
US7376763B2 (en) * 2003-07-17 2008-05-20 International Business Machines Corporation Method for transferring data from a memory subsystem to a network adapter by extending data lengths to improve the memory subsystem and PCI bus efficiency

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6735685B1 (en) * 1992-09-29 2004-05-11 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
EP1182571B1 (en) * 2000-08-21 2011-01-26 Texas Instruments Incorporated TLB operations based on shared bit
JP2003308206A (ja) * 2002-04-15 2003-10-31 Fujitsu Ltd プロセッサ装置
US7685434B2 (en) * 2004-03-02 2010-03-23 Advanced Micro Devices, Inc. Two parallel engines for high speed transmit IPsec processing
US7302525B2 (en) * 2005-02-11 2007-11-27 International Business Machines Corporation Method and apparatus for efficiently accessing both aligned and unaligned data from a memory
US7296108B2 (en) * 2005-05-26 2007-11-13 International Business Machines Corporation Apparatus and method for efficient transmission of unaligned data
US7461214B2 (en) * 2005-11-15 2008-12-02 Agere Systems Inc. Method and system for accessing a single port memory
JP4740766B2 (ja) * 2006-02-27 2011-08-03 富士通株式会社 データ受信装置、データ送受信システム、データ送受信システムの制御方法及びデータ受信装置の制御プログラム
US7681102B2 (en) * 2006-04-03 2010-03-16 Qlogic, Corporation Byte level protection in PCI-Express devices
JP4343923B2 (ja) 2006-06-02 2009-10-14 富士通株式会社 Dma回路およびデータ転送方法
IL187038A0 (en) * 2007-10-30 2008-02-09 Sandisk Il Ltd Secure data processing for unaligned data
US8230125B2 (en) * 2007-10-30 2012-07-24 Mediatek Inc. Methods for reserving index memory space in AVI recording apparatus
US8458677B2 (en) * 2009-08-20 2013-06-04 International Business Machines Corporation Generating code adapted for interlinking legacy scalar code and extended vector code
US20120089765A1 (en) * 2010-10-07 2012-04-12 Huang Shih-Chia Method for performing automatic boundary alignment and related non-volatile memory device
KR101861247B1 (ko) * 2011-04-06 2018-05-28 삼성전자주식회사 메모리 컨트롤러, 이의 데이터 처리 방법, 및 이를 포함하는 메모리 시스템
US9304898B2 (en) * 2011-08-30 2016-04-05 Empire Technology Development Llc Hardware-based array compression
JP5857735B2 (ja) * 2011-12-27 2016-02-10 株式会社リコー 画像処理方法、画像処理装置、及び制御プログラム
WO2014038070A1 (ja) * 2012-09-07 2014-03-13 富士通株式会社 情報処理装置,並列計算機システム及び情報処理装置の制御方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1173931A (zh) * 1995-09-01 1998-02-18 菲利浦电子北美公司 处理器的定制的基本操作的方法与设备
US7376763B2 (en) * 2003-07-17 2008-05-20 International Business Machines Corporation Method for transferring data from a memory subsystem to a network adapter by extending data lengths to improve the memory subsystem and PCI bus efficiency
TW200632666A (en) * 2004-11-02 2006-09-16 Standard Microsyst Smc Hardware supported peripheral component memory alignment method

Also Published As

Publication number Publication date
WO2015099676A1 (en) 2015-07-02
KR20160077110A (ko) 2016-07-01
KR101865261B1 (ko) 2018-06-07
JP2017503237A (ja) 2017-01-26
BR112016011256B1 (pt) 2022-07-05
JP6273010B2 (ja) 2018-01-31
CN105765484A (zh) 2016-07-13
EP3087454A4 (en) 2017-08-02
DE112013007700T5 (de) 2016-09-08
EP3087454A1 (en) 2016-11-02
US20160350250A1 (en) 2016-12-01
BR112016011256A2 (zh) 2017-08-08

Similar Documents

Publication Publication Date Title
CN101901205B (zh) 在PCIExpress上启用基于ID的流的方法和装置
US11144492B2 (en) Flex bus protocol negotiation and enabling sequence
KR101689998B1 (ko) 고성능 인터커넥트 링크 계층
CN105765484B (zh) 输入输出数据对齐
US10164880B2 (en) Sending packets with expanded headers
US8711875B2 (en) Aggregating completion messages in a sideband interface
CN108701004A (zh) 一种数据处理的系统、方法及对应装置
CN104641360A (zh) 对存储器及对等设备的双播PCIe入站写入
CN105556930A (zh) 针对远程存储器访问的nvm express控制器
CN104050136A (zh) 用于改进与硬件驱动的算法的均衡的装置、系统、以及方法
CN106484322A (zh) 一种挂载文件系统的方法、装置及设备
CN110442534A (zh) 用于相干消息的高带宽链路层
US20130173837A1 (en) Methods and apparatus for implementing pci express lightweight notification protocols in a cpu/memory complex
US20180189204A1 (en) Computer program product, system, and method to allow a host and a storage device to communicate between different fabrics
CN104932996A (zh) 用于控制链路接口的未使用硬件的功率消耗的方法、装置和系统
CN107078850A (zh) 边带奇偶校验处理
US10911261B2 (en) Method, apparatus and system for hierarchical network on chip routing
CN104598430A (zh) 一种cpu互联扩展系统的网络接口互联设计与控制系统
CN108885599B (zh) 用于串行附连小型计算机系统接口链路的方法和设备
TWI721989B (zh) 共享網目技術
CN105337667A (zh) 一种具有pcie光口的网卡

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant