CN106598742B - 一种ssd主控内部负载均衡***及方法 - Google Patents

一种ssd主控内部负载均衡***及方法 Download PDF

Info

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
Application number
CN201611217235.1A
Other languages
English (en)
Other versions
CN106598742A (zh
Inventor
杨万云
周士兵
彭鹏
马翼
田达海
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.)
Hunan Goke Microelectronics Co Ltd
Original Assignee
Hunan Goke Microelectronics Co Ltd
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 Hunan Goke Microelectronics Co Ltd filed Critical Hunan Goke Microelectronics Co Ltd
Priority to CN201611217235.1A priority Critical patent/CN106598742B/zh
Publication of CN106598742A publication Critical patent/CN106598742A/zh
Application granted granted Critical
Publication of CN106598742B publication Critical patent/CN106598742B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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固态硬盘的关键部件,其处理性能决定了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处理。
CN201611217235.1A 2016-12-26 2016-12-26 一种ssd主控内部负载均衡***及方法 Active CN106598742B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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的存储***及其数据读写方法

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