1.本发明涉及数据处理,尤其涉及一种可在pcie
‑
nvme协议与nvme
‑
tcp协议之间提供转换的桥接电路与采用此桥接电路的计算机系统。
背景技术:
2.nvme(non
‑
volatile memory express)是一种非易失性存储器的主机控制接口规格,专门搭配使用pcie(peripheral component interconnect express)总线的快闪存储器装置而设计的通信协议,例如计算机主机可通过pcie
‑
nvme协议来将数据写入具有pcie接口的固态硬盘(solid
‑
state drive,ssd),以及可通过pcie
‑
nvme协议来读取具有pcie接口的固态硬盘中所存储的数据,相较于采用其它输入/输出接口的固态硬盘,具有pcie接口的固态硬盘可藉由pcie
‑
nvme协议而具备更快的读写速度。然而,由于计算机主机需要通过pcie总线来存取固态硬盘,因此标准的pcie
‑
nvme协议无法适用于远端存储设备的数据存取,故近年来出现了nvme
‑
of(nvme
‑
over
‑
fabrics)方案以支持数据中心的网络存储,其中nvme
‑
tcp(nvme
‑
over
‑
tcp)协议可以在现有的网络基础设施上运作,不需要特殊的交换机、路由器与网络卡,因此通过nvme
‑
tcp协议可简单实现远端存储设备的部署。
3.然而,对于主机端而言,nvme
‑
tcp协议本身的复杂度会大幅增加中央处理器的运算负载,此外,为了存取nvme
‑
tcp装置(例如连接至局域网络的固态硬盘),主机端另需要安装新的驱动程序,由于需要不同的驱动程序来分别处理pcie
‑
nvme协议以及nvme
‑
tcp协议,也必然会增加系统复杂度。
技术实现要素:
4.因此,本发明的目的之一在于提出一种可在pcie
‑
nvme协议与nvme
‑
tcp协议之间提供转换的桥接电路与采用此桥接电路的计算机系统。
5.在本发明的一个实施例中,公开一种桥接电路。该桥接电路包含有一nvme装置控制器、一网络子系统以及一数据转送电路。该nvme装置控制器用以通过一pcie总线来与一计算机主机进行沟通。该网络子系统用以通过一网络来与一nvme
‑
tcp装置进行沟通。该数据转送电路耦接在该nvme装置控制器与该网络子系统之间,并用以在无须该计算机主机的介入之下,处理有关该nvme
‑
tcp装置的数据转送。
6.在本发明的另一个实施例中,公开一种计算机系统。该计算机系统包含有一计算机主机以及一桥接电路。该桥接电路包含有一nvme装置控制器、一网络子系统以及一数据转送电路。该nvme装置控制器用以通过一pcie总线来与该计算机主机进行沟通。该网络子系统用以通过一网络来与一nvme
‑
tcp装置进行沟通。该数据转送电路耦接在该nvme装置控制器与该网络子系统之间,并用以处理有关该nvme
‑
tcp装置的数据转送。该桥接电路会让该nvme
‑
tcp装置被该计算机主机视为一pcie
‑
nvme装置来进行存取。
7.在本发明的另一个实施例中,公开一种计算机系统。该计算机系统包含有一计算机主机以及一桥接电路。该桥接电路包含有一nvme装置控制器、一网络子系统以及一数据
转送电路。该nvme装置控制器用以通过一pcie总线来与该计算机主机进行沟通。该网络子系统用以通过一网络来与一nvme
‑
tcp装置进行沟通。该数据转送电路耦接在该nvme装置控制器与该网络子系统之间,并用以处理有关该nvme
‑
tcp装置的数据转送。该计算机主机载入并执行pcie
‑
nvme驱动程序来控制该计算机主机与该nvme装置控制器之间的沟通,且无须具备nvme
‑
tcp驱动程序。
8.本发明所揭示的桥接电路可将nvme
‑
tcp的处理自主机端处理器卸载出来,因而大幅降低主机端处理器的运算负载,另外,主机端处理器仅需执行pcie
‑
nvme驱动程序即可藉由本发明所揭示的桥接电路来完成nvme
‑
tcp装置的数据存取,无须安装并执行nvme
‑
tcp驱动程序,故可降低系统复杂度。
附图说明
9.图1为本发明采用桥接电路的计算机系统的示意图。
10.图2为根据本发明一实施例的桥接电路的示意图。
11.图3为根据本发明一实施例的nvme装置控制器的示意图。
12.图4为根据本发明一实施例的数据转送电路的示意图。
13.图5为根据本发明一实施例的网络子系统的示意图。
14.【符号说明】
15.100:计算机系统
16.102:计算机主机
17.103:pcie总线
18.104:pcie接口卡
19.105:网络
20.106:nvme
‑
tcp装置
21.112:中央处理器
22.114:系统存储装置
23.116:提交队列
24.118:完成队列
25.122,200:桥接电路
26.124:本地存储装置
27.132:非易失性存储器
28.201:芯片
29.202,300:nvme装置控制器
30.204,400:数据转送电路
31.206,500:网络子系统
32.302:pcie控制器
33.304:主机控制器
34.306:提交队列处理电路
35.308:完成队列处理电路
36.310:存储地址处理电路
37.312,314,316,318:功能区块
38.402:数据存取电路
39.404,406,408:存储元件
40.410:查找表
41.412,414:链接串列
42.502:卸载引擎
43.504:nvme
‑
tcp控制器
具体实施方式
44.图1为本发明采用桥接电路的计算机系统的示意图。计算机系统100包含计算机主机102、pcie接口卡104以及至少一nvme
‑
tcp装置106,为了简洁起见,图1仅绘示出一个nvme
‑
tcp装置106,然而,在实际应用时,计算机系统100可根据应用需求而设置多个nvme
‑
tcp装置106。计算机主机102包含中央处理器112与系统存储装置114,例如系统存储装置114可以是存储器。另外,系统存储装置114中设置有提交队列(submission queue,sq)116与完成队列(completion queue,cq)118,其中提交队列116用以存储计算机主机102所发出的命令,而完成队列118会与提交队列116配对,用来存储该命令的完成信息。pcie接口卡104上设置有桥接电路122与可供桥接电路122使用的本地存储装置124,例如本地存储装置124可以是存储器。pcie接口卡104可安装在计算机主机102上的pcie插槽,因此,桥接电路122便可通过pcie总线103来跟计算机主机102进行沟通。本实施例中,桥接电路122与nvme
‑
tcp装置106均连接至网络105,例如网络105为局域网络。nvme
‑
tcp装置106包含非易失性存储器132,例如nvme
‑
tcp装置106为采用nvme
‑
tcp协议的固态硬盘。本实施例中,桥接电路122可在pcie
‑
nvme协议与nvme
‑
tcp协议之间提供转换,换句话说,桥接电路122通过pcie
‑
nvme协议来跟计算机主机102沟通,并通过nvme
‑
tcp协议来跟nvme
‑
tcp装置106进行沟通,因此,计算机主机102本身无须处理nvme
‑
tcp协议堆迭(stack),故计算机主机102仅需载入并执行pcie
‑
nvme驱动程序drv_nvme来控制计算机主机102与桥接电路122之间的沟通,实际上无须具备nvme
‑
tcp驱动程序,进一步来说,桥接电路104可让nvme
‑
tcp装置106被计算机主机102视为pcie
‑
nvme装置来进行存取。
45.图2为根据本发明一实施例的桥接电路的示意图。图1所示的桥接电路122可由图2所示的桥接电路200来实现。如图2所示,桥接电路200包含nvme装置控制器202、数据转送电路204以及网络子系统206。本实施例中,nvme装置控制器202、数据转送电路204以及网络子系统206均设置在同一芯片201中。nvme装置控制器202用以通过pcie总线103来与计算机主机102进行沟通。网络子系统206用以通过网络(例如局域网络)105来与nvme
‑
tcp装置106进行沟通。数据转送电路204具备直接存储器存取(direct memory access,dma)的能力,并耦接在nvme装置控制器202与网络子系统206之间,用以在无须计算机主机102的介入之下,处理有关nvme
‑
tcp装置106的数据转送(包含通过nvme装置控制器202与网络子系统206来将计算机主机102的数据转送至nvme
‑
tcp装置106中的非易失性存储器132,以及通过nvme装置控制器202与网络子系统206来将nvme
‑
tcp装置106的非易失性存储器132所存储的数据转送至计算机主机102)。
46.图3为根据本发明一实施例的nvme装置控制器的示意图。图2所示的nvme装置控制
器202可由图3所示的nvme装置控制器300来实现。如图3所示,nvme装置控制器300包含pcie控制器302、主机控制器304、提交队列处理电路306、完成队列处理电路308以及存储地址处理电路310。pcie控制器302用以存取pcie总线103。主机控制器304包含多个功能区块,其中功能区块(标示为dntrfc)312用以控制pcie总线103的下行数据处理(downstream transaction),功能区块(标示为uptrfc)314用以控制pcie总线103的上行数据处理(upstream transaction),功能区块(标示为pcie_cfg)316包含有暂存器以存储pcie配置设定,以及功能区块(标示为nvme_cfg)318包含有暂存器以存储nvme配置设定。
47.提交队列处理电路306用以读取并处理计算机主机102的提交队列116中的命令(例如写入命令或读取命令),例如,当计算机主机102将命令(例如写入命令或读取命令)写入提交队列116之后,计算机主机102会通知nvme装置控制器300,而提交队列处理电路306后续便会将此命令(例如写入命令或读取命令)自提交队列116中提取出来。完成队列处理电路308用以将该命令(例如写入命令或读取命令)的完成信息写入计算机主机102的完成队列118中,例如,当数据转送电路204已经将写入命令所指示的主机端数据传送至nvme
‑
tcp装置106中的非易失性存储器132,则完成队列处理电路308会将此写入命令的完成信息写入至完成队列118中;同样地,当数据转送电路204已经将读取命令所指示的装置端数据传送至主机装置102中的系统存储装置114,则完成队列处理电路308会将此读取命令的完成信息写入至完成队列118中。
48.存储地址处理电路310用以提取该命令(例如写入命令或读取命令)所附带的存储地址信息,并可根据该存储地址信息来设定数据转送电路204,例如该存储地址信息会指定系统存储装置114中的存储地址,当提交队列116中所要处理的命令是写入命令时,要被写入至nvme
‑
tcp装置106中非易失性存储器132的主机端数据会位于该存储地址信息所指定的存储地址,另外,当提交队列116中所要处理的命令是读取命令时,要从nvme
‑
tcp装置106中非易失性存储器132读取出来的装置端数据会写入至该存储地址信息所指定的存储地址。本实施例中,该存储地址信息可利用分散聚合表(scatter gather list,sgl)的数据结构来记录,然而,本发明并不以此为限,在其它实施例中,该存储地址信息也可利用物理区域页(physical region page,prp)的数据结构来记录。由于nvme命令(例如写入命令或读取命令)所附带的该存储地址信息会指定系统存储装置114中的存储地址,因此,存储地址处理电路310可据此来设定数据转送电路204,以使数据转送电路204可正确处理有关nvme
‑
tcp装置106的数据转送操作。
49.图4为根据本发明一实施例的数据转送电路的示意图。图2所示的数据转送电路204可由图4所示的数据转送电路400来实现。如图4所示,数据转送电路400包含数据存取电路402与多个存储元件(例如存储器)404、406、408。存储元件406用以存储一链接串列(linked list)412,其中链接串列412中的每一节点会记录系统存储装置114中的一存储地址,例如链接串列412的多个节点分别记录系统存储装置114中的多个存储地址addr_a1、addr_a2、addr_a3、addr_a4。存储元件408则用以存储另一链接串列414,其中链接串列414中的每一节点会记录本地存储装置124中的一存储地址,例如链接串列414的多个节点分别记录本地存储装置124中的多个存储地址addr_b1、addr_b2、addr_b3、addr_b4。存储元件404则用以存储一查找表410,其中查找表410会记录链接串列412中第一节点(本实施例为记录存储地址addr_a1的节点)在存储元件406中的存储地址ptr_1以及链接串列414中第一
节点(本实施例为记录存储地址addr_b1的节点)在存储元件408中的存储地址ptr_2。数据存取电路402用以依据查找表410来读取链接串列412及链接串列414,以处理计算机主机102与nvme
‑
tcp装置106之间的数据转送操作。
50.当计算机主机102将nvme命令(例如写入命令或读取命令)写入至提交队列116,该nvme命令会具有相对应的nvme命令识别码hid,此外,通过网络105,桥接电路122会藉由tcp连线识别码(tcp session id)sid来与nvme
‑
tcp装置106进行沟通,并会基于该pcie
‑
nvme命令来产生并传送nvme
‑
tcp命令(例如写入命令或读取命令)至nvme
‑
tcp装置106,而该nvme
‑
tcp命令同样会具有相对应的命令识别码cid,本实施例中,nvme命令识别码hid会绑定相对应的一对tcp连线识别码sid与nvme
‑
tcp命令识别码cid来作为查找表410的索引,如图4所示,查找表410会将一组nvme命令识别码hid、tcp连线识别码sid与nvme
‑
tcp命令识别码cid映射至链接串列412中第一节点在存储元件406中的存储地址ptr_1以及链接串列414中第一节点在存储元件408中的存储地址,因此,数据存取电路402便可依据该组nvme命令识别码hid、tcp连线识别码sid与nvme
‑
tcp命令识别码cid来自查找表410读取出有关链接串列起始点的指标(包含链接串列412中第一节点在存储元件406中的存储地址ptr_1以及链接串列414中第一节点在存储元件408中的存储地址ptr_2)。
51.根据计算机主机102所发出的nvme命令(例如写入命令或读取命令),数据存取电路402可以参照所要存取的命名空间(namespace)来决定网络105上哪个nvme
‑
tcp装置要被存取,假若所要存取的是nvme
‑
tcp装置106,则数据存取电路402会将桥接电路122与nvme
‑
tcp装置106之间的tcp连线跟nvme
‑
tcp装置106的命名空间进行绑定,而当桥接电路122将nvme
‑
tcp命令传送至nvme
‑
tcp装置106时,数据存取电路402便会建立对照表410并根据存储地址处理电路310所提供的信息(亦即nvme命令所附带的存储地址信息)来设定存储元件406中的链接串列412与存储元件408中的链接串列414。
52.假如计算机主机102所发出的nvme命令是写入命令,则数据存取电路402依据链接串列412中第一节点在存储元件406中的存储地址ptr_1来开始读取链接串列412所记录的存储地址addr_a1~addr_a4,以从系统存储装置114读取一笔数据(从存储地址addr_a1~addr_a4读取),并依据链接串列414中第一节点在存储元件408中的存储地址ptr_2来开始读取链接串列414所记录的存储地址addr_b1~addr_b4,来将该笔数据写入至本地存储装置124(写入至存储地址addr_b1~addr_b4)。之后,数据存取电路402再依据链接串列414中第一节点在存储元件408中的存储地址ptr_2来开始读取链接串列414所记录的存储地址addr_b1~addr_b4,以自本地存储装置124读取该笔数据(从存储地址addr_b1~addr_b4读取),并通过网络子系统206来将该笔数据传送至nvme
‑
tcp装置106以写入至非易失性存储器132。
53.假如计算机主机102所发出的nvme命令是读取命令,则网络子系统206会自nvme
‑
tcp装置106接收一笔数据,另外,数据存取电路402便依据链接串列414中第一节点在存储元件408中的存储地址ptr_2来开始读取链接串列414所记录的存储地址addr_b1~addr_b4,以将该笔数据写入至本地存储装置124(写入至存储地址addr_b1~addr_b4)。之后,数据存取电路402会再依据链接串列414中第一节点在存储元件408中的存储地址ptr_2来开始读取链接串列414所记录的存储地址addr_b1~addr_b4,以自本地存储装置124读取该笔数据(从存储地址addr_b1~addr_b4读取),并且会依据链接串列412中第一节点在存储元
件406中的存储地址ptr_1来开始读取链接串列412所记录的存储地址addr_a1~addr_a4,以将该笔数据写入至系统存储装置114(写入至存储地址addr_a1~addr_a4)。
54.如前所述,网络子系统206会通过网络(例如局域网络)105来与nvme
‑
tcp装置106进行沟通,例如,网络子系统206通过网络105来将命令传递至nvme
‑
tcp装置106、将写入数据传递至nvme
‑
tcp装置106,以及自nvme
‑
tcp装置106接收读取数据。图5为根据本发明一实施例的网络子系统的示意图。图2所示的网络子系统206可由图5所示的网络子系统500来实现。如图5所示,网络子系统500包含卸载引擎502以及nvme
‑
tcp控制器504。卸载引擎502是专门用以处理网络子系统500与nvme
‑
tcp装置106之间的传输控制协议/互联网协议堆迭(tcp/ip stack)的硬件,因此,桥接电路122/200无须处理器介入传输控制协议/互联网协议堆迭的处理。nvme
‑
tcp控制器504用以触发数据转送电路204/400来自计算机主机102读取数据以通过卸载引擎502传送至nvme
‑
tcp装置106,以及触发数据转送电路204/400来将卸载引擎502自nvme
‑
tcp装置106所接收的数据传送至计算机主机102。另外,nvme
‑
tcp控制器504也可根据nvme命令识别码hid来将tcp连线识别码sid与nvme
‑
tcp命令识别码cid编码至网络分组中,以及另对nvme
‑
tcp数据(包含写入命令或读取指令)进行编码并加入相对应循环冗余校验(cyclic redundancy check)数据至网络分组;以及nvme
‑
tcp控制器504也可对网络分组进行解码来得到nvme
‑
tcp数据(包含写入命令的完成信息或读取命令的完成信息),并根据相对应循环冗余校验数据来进行数据正确性检查与错误更正。
55.综上所述,本发明所揭示的桥接电路可将nvme
‑
tcp的处理自主机端处理器卸载出来,因而大幅降低主机端处理器的运算负载,另外,主机端处理器仅需执行pcie
‑
nvme驱动程序即可藉由本发明所揭示的桥接电路来完成nvme
‑
tcp装置的数据存取,无须安装并执行nvme
‑
tcp驱动程序,故可降低系统复杂度。
56.以上所述仅为本发明的优选实施例,凡依本发明权利要求书所做的均等变化与修饰,皆应属本发明的涵盖范围。
技术特征:
1.一种桥接电路,包含有:nvme装置控制器,用以通过pcie总线来与计算机主机进行沟通;网络子系统,用以通过网络来与nvme
‑
tcp装置进行沟通;以及数据转送电路,耦接在该nvme装置控制器与该网络子系统之间,用以在无须该计算机主机的介入之下,处理有关该nvme
‑
tcp装置的数据转送。2.如权利要求1所述的桥接电路,其中该nvme装置控制器包含有:pcie控制器,用以存取该pcie总线;主机控制器,耦接在该pcie控制器,用以控制该pcie总线的上行数据处理与下行数据处理、nvme配置设定以及pcie配置设定;提交队列处理电路,耦接在该主机控制器,用以读取并处理该计算机主机的提交队列中的命令;完成队列处理电路,耦接在该主机控制器,用以将该命令的完成信息写入该计算机主机的完成队列中;以及存储地址处理电路,耦接在该主机控制器,用以提取该命令所附带的存储地址信息,并根据该存储地址信息来设定该数据转送电路。3.如权利要求1所述的桥接电路,其中该网络子系统包含有:卸载引擎,用以处理该网络子系统与该nvme
‑
tcp装置之间的传输控制协议/互联网协议堆迭;以及nvme
‑
tcp控制器,用以触发该数据转送电路来自该计算机主机读取数据以通过该卸载引擎传送至该nvme
‑
tcp装置,以及触发该数据转送电路来将该卸载引擎自该nvme
‑
tcp装置所接收的数据传送至该计算机主机。4.如权利要求1所述的桥接电路,其中该数据转送电路包含有:第一存储元件,用以存储第一链接串列,该第一链接串列中的每一节点记录该计算机主机的系统存储装置中的存储地址;第二存储元件,用以存储第二链接串列,该第二链接串列中的每一节点记录可供该桥接电路使用的本地存储装置中的存储地址;第三存储元件,用以存储查找表,该查找表记录该第一链接串列中第一节点在该第一存储元件中的存储地址以及该第二链接串列中第一节点在该第二存储元件中的存储地址;以及数据存取电路,用以依据该查找表来读取该第一链接串列以及该第二链接串列,以处理该计算机主机与该nvme
‑
tcp装置之间的数据转送。5.如权利要求4所述的桥接电路,其中该查找表另记录一组nvme命令识别码、tcp连线识别码与nvme
‑
tcp命令识别码映射至该第一链接串列中第一节点在该第一存储元件中的存储地址以及该第二链接串列中第一节点在该第二存储元件中的存储地址;以及该数据存取电路另用以依据该组nvme命令识别码、tcp连线识别码与nvme
‑
tcp命令识别码来自该查找表读取出该第一链接串列中第一节点在该第一存储元件中的存储地址以及该第二链接串列中第一节点在该第二存储元件中的存储地址。6.如权利要求4所述的桥接电路,其中该数据存取电路依据该第一链接串列中第一节点在该第一存储元件中的存储地址来开始读取该第一链接串列,以自该系统存储装置读取
一笔数据,并依据该第二链接串列中第一节点在该第二存储元件中的存储地址来开始读取该第二链接串列,以将该笔数据写入至该本地存储装置。7.如权利要求6所述的桥接电路,其中该数据存取电路另依据该第二链接串列中第一节点在该第二存储元件中的存储地址来开始读取该第二链接串列,以自该本地存储装置读取该笔数据,并通过该网络子系统来将该笔数据传送至该nvme
‑
tcp装置。8.如权利要求4所述的桥接电路,其中该网络子系统自该nvme
‑
tcp装置接收一笔数据;以及该数据存取电路依据该第二链接串列中第一节点在该第二存储元件中的存储地址来开始读取该第二链接串列,以将该笔数据写入至该本地存储装置。9.如权利要求8所述的桥接电路,其中该数据存取电路另依据该第二链接串列中第一节点在该第二存储元件中的存储地址来开始读取该第二链接串列,以自至该本地存储装置读取该笔数据,并依据该第一链接串列中第一节点在该第一存储元件中的存储地址来开始读取该第一链接串列,以将该笔数据写入至该系统存储装置。10.如权利要求1所述的桥接电路,其中该nvme装置控制器、该网络子系统以及该数据转送电路均设置在同一芯片。11.如权利要求1所述的桥接电路,其中该桥接电路设置在pcie接口卡。12.一种计算机系统,包含有:计算机主机;以及桥接电路,包含有:nvme装置控制器,用以通过pcie总线来与该计算机主机进行沟通;网络子系统,用以通过网络来与nvme
‑
tcp装置进行沟通;以及数据转送电路,耦接在该nvme装置控制器与该网络子系统之间,用以处理有关该nvme
‑
tcp装置的数据转送;其中该桥接电路会让该nvme
‑
tcp装置被该计算机主机视为pcie
‑
nvme装置来进行存取。13.一种计算机系统,包含有:计算机主机;以及桥接电路,包含有:nvme装置控制器,用以通过pcie总线来与该计算机主机进行沟通;网络子系统,用以通过网络来与nvme
‑
tcp装置进行沟通;以及数据转送电路,耦接在该nvme装置控制器与该网络子系统之间,用以处理有关该nvme
‑
tcp装置的数据转送;其中该计算机主机载入并执行pcie
‑
nvme驱动程序来控制该计算机主机与该nvme装置控制器之间的沟通,且无须具备nvme
‑
tcp驱动程序。
技术总结
本发明提供一种桥接电路与计算机系统。该桥接电路包含有NVMe装置控制器、网络子系统以及数据转送电路。该NVMe装置控制器用以通过PCIe总线来与计算机主机进行沟通。该网络子系统用以通过网络来与NVMe
技术研发人员:赖瑾
受保护的技术使用者:威盛电子股份有限公司
技术研发日:2021.03.26
技术公布日:2021/6/29
转载请注明原文地址:https://doc.8miu.com/read-397.html