CN106598742B - 一种ssd主控内部负载均衡***及方法 - Google Patents
一种ssd主控内部负载均衡***及方法 Download PDFInfo
- Publication number
- CN106598742B CN106598742B CN201611217235.1A CN201611217235A CN106598742B CN 106598742 B CN106598742 B CN 106598742B CN 201611217235 A CN201611217235 A CN 201611217235A CN 106598742 B CN106598742 B CN 106598742B
- Authority
- CN
- China
- Prior art keywords
- command
- cpu
- processed
- cmd
- slot
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Systems (AREA)
- Multi Processors (AREA)
Abstract
本发明公开了一种SSD主控内部负载均衡***及方法,均衡***包括主机接口:用于负责接收来自主机的命令和数据,同时向主机返回响应和向主机传送数据;NFC:负责完成SSD主控和NAND Flash之间的命令交互和数据传输;IO命令均衡引擎:负责分发来自主机接口的IO命令请求到CPU处理,同时转发来自CPU的响应到主机接口;多个CPU:用于负责对IO命令均衡引擎分发过来的IO命令的调度处理,并控制数据传输。本发明解决了偏硬件型***设计面临的芯片面积和功耗问题,同时解决了通常软件型***方案中,多CPU处理带来的时延增加问题。
Description
技术领域
本发明涉及SSD主控,特别是一种SSD主控内部负载均衡***及方法。
背景技术
SSD主控为SSD固态硬盘的关键部件,其处理性能决定了SSD固态硬盘能够达到的最高性能。近几年,企业级PCIe SSD主控性能已经进入百万级IOPS,而业界主流设计厂商在不断追求SSD主控极致性能的过程中,主要产生了两种架构类型:偏硬件型,以逻辑RTL实现SSD主控的FTL表项管理,CPU主要用于各种异常处理;偏软件型,表项管理主要由软件实现,采用非常强大的CPU来支撑算法实现。
偏硬件性***设计的特点就是,整个IO路径的所有主要功能,包括FTL表项管理这块,都由硬件逻辑门电路实现,CPU主要用于极少发生的异常处理。这种设计方式由于主要关键功能都采用硬件门电路实现,一方面会增加芯片面积提升芯片成本,一方面还会增加芯片功耗。同时该类型设计的技术复杂度非常高,稳定周期长,会对产品带来更多的技术风险和商业风险。
偏软件型***设计的特点就是,硬件主要负责数据通路,CPU负责控制调度IO命令在硬件模块间的交互和数据传输。由于CPU参与了更多IO处理,在追求最高IOPS的同时,通常面临处理资源瓶颈,进而限制了***的最大IOPS规格。
综上,偏硬件型表项管理设计,无法避免的问题就是功耗过高,稳定周期偏长,技术门槛高的问题;而偏软件型主要面临的就是CPU资源不够,通常受限CPU资源瓶颈,而无法达到最大性能。
为了突破CPU资源瓶颈问题,当前软件型主流方案主要通过增加片内CPU个数来解决。将IO处理的主流程分解为多个子流程,每个子流程由1个CPU单独处理,所有CPU一起完成整个IO的处理,进而达到提升整个***性能的目的。这种方法需要进行CPU间信息交互,交互次数取决于分解的子流程。如果分解的子流程到单个CPU太少,则达不到增加CPU资源的目的;而分解太多,则CPU间交互太多,总的CPU内部消耗也会增大,那么每个IO的时延也就增大了。
发明内容
本发明所要解决的技术问题是,针对现有技术不足,提供一种SSD主控内部负载均衡***及方法,解决偏硬件型***设计面临的芯片面积和功耗问题,同时解决通常软件型***方案中,多CPU处理带来的时延增加问题。
为解决上述技术问题,本发明所采用的技术方案是:一种SSD主控内部负载均衡***,包括:
主机接口:用于负责接收来自主机的命令和数据,同时向主机返回响应和向主机传送数据;
NFC:负责完成SSD主控和NAND Flash之间的命令交互和数据传输;
IO命令均衡引擎:负责分发来自主机接口的IO命令请求到CPU处理,同时转发来自CPU的响应到主机接口;
多个CPU:用于负责对IO命令均衡引擎分发过来的IO命令的调度处理,并控制数据传输。
所述IO命令均衡引擎包括:
CMD Slot:硬件RAM资源,用于存放CMD上下文信息,将命令请求和响应进行匹配;;CMD上下文信息即IO命令上下文;
处理引擎:用于管理CPU资源和CMD Slot资源,并为IO命令选择合适的CPU;
IO Router:用于根据处理引擎为IO命令选择目的CPU,将IO命令通过多路复用器/多路分配器分发到对应的CPU;
多路复用器/多路分配器:用于将IO命令分发到不同的CPU,并将各个CPU处理的IO响应复用给处理引擎做进一步处理。
IO命令均衡引擎分发IO命令的过程包括:
1)收到IO命令后,判断是否还存在CMD Slot资源,若存在,则进入步骤2);否则,处理结束,即挂起当前IO命令;
2)遍历下一个CMD Slot记录的正在处理的IO命令;
3)若待处理的IO命令与CMD Slot记录的正在处理的IO命令存在访问LBA(LogicalBlock Address)地址冲突,则选择后者对应的CPU来处理该当前待处理的IO命令,同时分配新的CMD Slot资源来存放当前IO命令上下文,进入步骤4);否则,分配新的CMD Slot资源给当前待处理的IO命令,并选择当前处理IO命令数最少的CPU处理该当前待处理的IO命令,进入步骤4);
4)将当前待处理的IO命令通过IO Router转发给选出的CPU处理;
5)在CMD Slot记录当前IO命令的上下文信息,并将所述选出的CPU处理的IO命令个数加1;
6)结束。
将各个CPU处理的响应复用给处理引擎做进一步处理的步骤包括:
1)多路复用器/多路分配器收到CPU发来的IO响应;
2)将对应的CPU的IO处理个数减1,并释放IO响应对应的CMD Slot资源;
3)处理引擎转发IO响应到主机接口,并判断是否有挂起的待处理IO命令在等待队列中;若有,则读取并处理等待队列里的IO命令,进入步骤4);否则,进入步骤4);
4)结束。
本发明还通过了一种利用上述***均衡SSD主控内部负载的方法,该方法主要实现过程为:通过IO命令均衡引擎在CPU间分发IO命令,每个CPU独立处理分发给自己的整个IO命令,各CPU间互不交互。
保证CPU间互不交互的方法包括以下步骤:
1)若当前待处理的IO命令与CMD Slot记录的正在处理的IO命令存在访问LBA地址冲突,则分配新的CMD Slot资源给当前待处理的IO命令,则选择后者对应的CPU来处理该当前待处理的IO命令,同时分配新的CMD Slot资源来存放当前IO命令上下文,进入步骤2);否则,分配新的CMD Slot资源给当前待处理的IO命令,并选择当前处理IO命令数最少的CPU处理该当前待处理的IO命令,进入步骤2);
2)将当前待处理的IO命令转发给选出的CPU处理。
与现有技术相比,本发明所具有的有益效果为:本发明在SSD主控内部利用IO命令负载均衡引擎,在多个CPU间分发IO命令,各CPU间互不交互,通过内部IO命令负载均衡引擎的IO地址冲突机制,来保证各个CPU间的IO处理真正独立,互不干扰,解决了偏硬件型***设计面临的芯片面积和功耗问题,同时解决了通常软件型***方案中,多CPU处理带来的时延增加问题。本发明通过使用IO均衡引擎,能够在使用多CPU资源处理IO命令的同时,让多个CPU能够独立、完整的处理每一个IO,有效避免了CPU间消息交互的开销给单个IO命令所带来的时延增加;本发明的SSD主控***,各个CPU独立完成相同功能,互不影响。可以通过简单配置IO均衡引擎管理的CPU资源个数和实际物理布局的CPU资源,不用更改IO路径和处理流程,就能够设计实现出各种性能规格的SSD主控芯片。
附图说明
图1为本发明SSD主控内部负载均衡整体框图;
图2为本发明IO命令均衡引擎结构示意图;
图3为本发明IO分发响应时序图;
图4为本发明IO均衡引擎分发IO命令流程图;
图5为本发明IO均衡引擎处理IO命令响应流程图。
具体实施方式
本发明利用一个IO命令均衡引擎,负责将来自HIF接口的IO命令分发到内部各个CPU,各CPU再负责自己所接收到的IO进行处理。每个CPU在***内都有唯一编号。
如图1,本发明的各模块功能如下:
HIF:Host Interface,主机接口,负责接收来自主机的命令和数据,同时向主机返回响应和向主机传送数据。
NFC:Nand Flash Controller,NAND Flash控制器,负责完成SSD主控和NANDFlash之间的命令交互和数据传输。
IO Command Balance Engine:IO命令均衡引擎,负责完成分发来自HIF模块的IO命令请求到内部CPU处理,同时转发来自内部CPU的响应到HIF。IO命令均衡引擎可以灵活配置***内部用于处理IO命令的CPU资源个数来适应不同的SSD主控性能要求。
Data Path:数据通路,HIF和NFC之间的数据传输通路,主要包括数据总线和DMA引擎等。
Data RAM:用于数据通路传输数据过程中的数据缓存。
CPUx:负责IO命令均衡引擎分发过来的IO命令的调度处理和控制数据传输。每个CPU都完成相同的计算和控制功能。
如图2,IO命令均衡引擎负责为IO选择用于处理该IO的合适的CPU,并将该IO转发给该CPU,同时记录包括IO地址范围、目的CPU标识、目的CPU当前正处理命令个数等上下文信息。
CMD Slot:Command Slot,命令槽位,用于存放IO命令上下文的空间。CMD Slot记录的IO命令上下文包括,CMD Slot是否有效标识,IO标识,IO地址范围。
Process Engine:处理引擎,负责管理CPU资源和CMD Slot资源,并根据策略为IO命令选择合适CPU资源。
IO Router:IO路由器,根据Process Engine为IO选择的目的CPU,将IO通过Demux分发到对应的CPU。
Mux/Demux:多路复用器/多路分配器,负责将IO命令分发到不同的CPU以及将各个CPU处理的响应复用给Process Engine做进一步处理。
本发明通过在SSD主控内部利用IO命令负载均衡引擎,在多个CPU间分发IO命令,各CPU间互不交互。本发明的SSD主控,通过内部IO命令负载均衡引擎的IO地址冲突机制,来保证各个CPU间的IO处理真正独立,互不干扰。可通过简单配置IO命令均衡引擎管理的CPU资源来适应不同的性能需求。IO命令均衡器引擎能够检测当前均衡处理器待分发处理IO和各个CPU正在处理的IO间是否存在地址冲突。IO命令均衡器引擎能够将待分发处理的IO分发给地址存在冲突的IO所对应的CPU进行处理。IO命令均衡器引擎通过Command Slot的方式,记录前后正在处理的IO上下文信息,包括目的CPU编号,IO地址范围等。在IO命令均衡器引擎与CPU间交互的控制消息中,携带Command Slot编号来关联均衡引擎分发给CPU的IO请求消息和CPU发给均衡引擎的IO响应消息。IO命令负载均衡引擎记录当前各个CPU正在处理的IO个数,并选择最小IO处理个数的CPU来处理当前待处理IO。
Claims (6)
1.一种SSD主控内部负载均衡***,其特征在于,包括:
主机接口:用于负责接收来自主机的命令和数据,同时向主机返回响应和向主机传送数据;
NFC:负责完成SSD主控和NAND Flash之间的命令交互和数据传输;
IO命令均衡引擎:负责分发来自主机接口的IO命令请求到CPU处理,同时转发来自CPU的响应到主机接口;所述IO命令均衡引擎包括CMD Slot:用于存放CMD上下文信息,CMD上下文信息用于将命令请求和响应进行匹配;CMD上下文信息即IO命令上下文;
多个CPU:用于负责对IO命令均衡引擎分发过来的IO命令的调度处理,并控制数据传输。
2.根据权利要求1所述的SSD主控内部负载均衡***,其特征在于,所述IO命令均衡引擎还包括:
处理引擎:用于管理CPU资源和CMD Slot资源,并为IO命令选择合适的CPU;
IO Router:用于根据处理引擎为IO命令选择目的CPU,将IO命令通过多路复用器/多路分配器分发到对应的CPU;
多路复用器/多路分配器:用于将IO命令分发到不同的CPU,并将各个CPU处理的IO响应复用给处理引擎做进一步处理。
3.根据权利要求2所述的SSD主控内部负载均衡***,其特征在于,IO命令均衡引擎分发IO命令的过程包括:
1)收到IO命令后,判断是否还存在CMD Slot资源,若存在,则进入步骤2);否则,处理结束,即挂起当前IO命令;
2)遍历下一个CMD Slot记录的正在处理的IO命令;
3)若待处理的IO命令与CMD Slot记录的正在处理的IO命令存在访问LBA地址冲突,则选择后者对应的CPU来处理该当前待处理的IO命令,同时分配新的CMD Slot资源来存放当前IO命令上下文,进入步骤4);否则,分配新的CMD Slot资源给当前待处理的IO命令,并选择当前处理IO命令数最少的CPU处理该当前待处理的IO命令,进入步骤4);
4)将当前待处理的IO命令通过IO Router转发给选出的CPU处理;
5)在CMD Slot记录当前IO命令的上下文信息,并将所述选出的CPU处理的IO命令个数加1;
6)结束。
4.根据权利要求2所述的SSD主控内部负载均衡***,其特征在于,将各个CPU处理的响应复用给处理引擎做进一步处理的步骤包括:
1)多路复用器/多路分配器收到CPU发来的IO响应;
2)将对应的CPU的IO处理个数减1,并释放IO响应对应的CMD Slot资源;
3)处理引擎转发IO响应到主机接口,并判断是否有挂起的待处理IO命令在等待队列中;若有,则读取并处理等待队列里的IO命令,进入步骤4);否则,进入步骤4);
4)结束。
5.一种利用权利要求1~4之一所述的***均衡SSD主控内部负载的方法,其特征在于,该方法主要实现过程为:通过IO命令均衡引擎在CPU间分发IO命令,每个CPU独立处理分发给自己的整个IO命令,各CPU间互不交互。
6.根据权利要求5所述的方法,其特征在于,保证CPU间互不交互的方法包括以下步骤:
1)若当前待处理的IO命令与CMD Slot记录的正在处理的IO命令存在访问LBA地址冲突,则分配新的CMD Slot资源给当前待处理的IO命令,则选择后者对应的CPU来处理该当前待处理的IO命令,同时分配新的CMD Slot资源来存放当前IO命令上下文,进入步骤2);否则,分配新的CMD Slot资源给当前待处理的IO命令,并选择当前处理IO命令数最少的CPU处理该当前待处理的IO命令,进入步骤2);
2)将当前待处理的IO命令转发给选出的CPU处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611217235.1A CN106598742B (zh) | 2016-12-26 | 2016-12-26 | 一种ssd主控内部负载均衡***及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611217235.1A CN106598742B (zh) | 2016-12-26 | 2016-12-26 | 一种ssd主控内部负载均衡***及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106598742A CN106598742A (zh) | 2017-04-26 |
CN106598742B true CN106598742B (zh) | 2020-01-03 |
Family
ID=58603923
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611217235.1A Active CN106598742B (zh) | 2016-12-26 | 2016-12-26 | 一种ssd主控内部负载均衡***及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106598742B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107957970A (zh) * | 2017-10-23 | 2018-04-24 | 记忆科技(深圳)有限公司 | 一种异构多核的通讯方法及固态硬盘控制器 |
CN112612410B (zh) * | 2020-12-01 | 2022-12-27 | 苏州浪潮智能科技有限公司 | 一种应用于固态硬盘内命令的异常处理的方法及装置 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101636712B (zh) * | 2006-12-06 | 2016-04-13 | 才智知识产权控股公司(2) | 在存储控制器内服务对象请求的装置、***和方法 |
KR101486987B1 (ko) * | 2008-05-21 | 2015-01-30 | 삼성전자주식회사 | 불휘발성 메모리를 포함하는 반도체 메모리 장치 및 불휘발성 메모리를 위한 커맨드 스케줄링 방법 |
US8069300B2 (en) * | 2008-09-30 | 2011-11-29 | Micron Technology, Inc. | Solid state storage device controller with expansion mode |
KR101541344B1 (ko) * | 2008-12-05 | 2015-08-03 | 삼성전자주식회사 | 메모리 장치 및 메모리 장치의 제어 방법 |
KR101662824B1 (ko) * | 2009-07-08 | 2016-10-06 | 삼성전자주식회사 | 고체 상태 드라이브 장치 및 그것의 구동 방법 |
CN102122267A (zh) * | 2010-01-07 | 2011-07-13 | 上海华虹集成电路有限责任公司 | 一种可同时进行数据传输及FTL管理的多通道NANDflash控制器 |
US8321627B1 (en) * | 2011-10-06 | 2012-11-27 | Google Inc. | Memory operation command latency management |
US8839073B2 (en) * | 2012-05-04 | 2014-09-16 | Lsi Corporation | Zero-one balance management in a solid-state disk controller |
CN104102458B (zh) * | 2014-06-27 | 2017-11-10 | 北京兆易创新科技股份有限公司 | 多核cpu的负载均衡方法、多核cpu及固态硬盘 |
CN104965678A (zh) * | 2015-07-01 | 2015-10-07 | 忆正科技(武汉)有限公司 | 一种固态存储的控制方法、装置及固态存储设备 |
CN105549916B (zh) * | 2015-12-31 | 2017-03-22 | 湖南国科微电子股份有限公司 | PCIe固态硬盘控制器、基于PCIe的存储***及其数据读写方法 |
-
2016
- 2016-12-26 CN CN201611217235.1A patent/CN106598742B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN106598742A (zh) | 2017-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11061580B2 (en) | Storage device and controllers included in storage device | |
CN104781756B (zh) | 管理处理器的功率状态 | |
KR101270848B1 (ko) | 트래픽 클래스들과 관련된 포트들을 갖는 다중 포트 메모리 제어기 | |
US20140104967A1 (en) | Inter-memory data transfer control unit | |
JP2009508247A (ja) | バス調停に関する方法及びシステム | |
MX2012005934A (es) | Disco de estado solido (ssd) multi-interfaz, metodo de procesamiento y sistema del mismo. | |
EP3113029B1 (en) | Systems and methods for asymmetric memory access to memory banks within integrated circuit systems | |
EP2791941A1 (en) | Memory apparatuses, computer systems and methods for ordering memory responses | |
JP2017211984A (ja) | 再構成可能なマルチポートを具備するPCIeストレージシステムのためのQoSを認識した入出力管理方法、管理システム、及び管理装置 | |
US8213461B2 (en) | Method of designating slots in a transmission frame for controlling transmission of data over an interconnect coupling a plurality of master units with a plurality of slave units | |
US20140068125A1 (en) | Memory throughput improvement using address interleaving | |
CN105549916A (zh) | PCIe固态硬盘控制器、基于PCIe的存储***及其数据读写方法 | |
WO2016078307A1 (zh) | 可配置片上互联***及其实现方法、装置和存储介质 | |
KR20130065957A (ko) | 메모리 제어장치 및 제어방법, 그리고 그 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체 | |
JPWO2014027445A1 (ja) | アクセス制御装置、中継装置、アクセス制御方法、コンピュータプログラム | |
CN106598742B (zh) | 一种ssd主控内部负载均衡***及方法 | |
US20160139806A1 (en) | Independent Ordering Of Independent Transactions | |
KR101875171B1 (ko) | 칩 선택을 감소하는 디바이스들, 시스템들, 및 방법들 | |
CN110716691A (zh) | 调度方法、装置、闪存设备和*** | |
KR20120037785A (ko) | 부하 균형을 유지하는 시스템 온 칩 및 그것의 부하 균형 유지 방법 | |
US8667199B2 (en) | Data processing apparatus and method for performing multi-cycle arbitration | |
CN107533526B (zh) | 经由具有完全连接网格拓扑的pci express结构向存储写入数据 | |
US8706925B2 (en) | Accelerating memory operations blocked by ordering requirements and data not yet received | |
US11954505B2 (en) | Distributed data storage system with dormant hardware activation | |
US20130042043A1 (en) | Method and Apparatus for Dynamic Channel Access and Loading in Multichannel DMA |
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 |