CN111177041B - 支持新能力的可配置集成电路 - Google Patents

支持新能力的可配置集成电路 Download PDF

Info

Publication number
CN111177041B
CN111177041B CN201911107984.2A CN201911107984A CN111177041B CN 111177041 B CN111177041 B CN 111177041B CN 201911107984 A CN201911107984 A CN 201911107984A CN 111177041 B CN111177041 B CN 111177041B
Authority
CN
China
Prior art keywords
register
firmware
read
capabilities
new
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
CN201911107984.2A
Other languages
English (en)
Other versions
CN111177041A (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.)
SK Hynix Inc
Original Assignee
SK Hynix Inc
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 SK Hynix Inc filed Critical SK Hynix Inc
Publication of CN111177041A publication Critical patent/CN111177041A/zh
Application granted granted Critical
Publication of CN111177041B publication Critical patent/CN111177041B/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/468Specific access rights for resources, e.g. using capability register
    • 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/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • 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/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • 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/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • 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)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Stored Programmes (AREA)
  • Semiconductor Integrated Circuits (AREA)

Abstract

本公开涉及使集成电路(IC)能够适应更新的高速外围组件互连(PCIe)技术规范的新的PCIe能力。创建IC的跨越寄存器和功能编号的目标范围以适应新能力的固件可编程寄存器。主机向IC发出配置请求,包括新能力的寄存器和功能编号。当寄存器编号和功能编号处于目标范围内时,IC返回目标寄存器的值。主机更新该值并触发固件中断,将新能力添加到现有能力的列表中。

Description

支持新能力的可配置集成电路
相关申请的交叉引用
本申请要求于2018年11月13日提交的申请号为62/760,107的美国临时申请的权益,该申请的全部内容通过引用并入本文。
技术领域
本公开的实施例涉及一种集成电路(IC),该集成电路可配置以支持可由具有该IC作为组件的装置的新技术规范或更新的技术规范所需的新能力(capability)。
背景技术
计算机环境范例已经转变为可在任何时间和任何地点使用的普适计算系统。因此,诸如移动电话、数码相机和笔记本计算机的便携式电子装置的使用已经快速增长。这些便携式电子装置通常使用具有存储器装置的存储器系统,即数据存储装置。数据存储装置用作便携式电子装置的主存储器装置或辅助存储器装置。
用作存储器装置的数据存储装置因不具有移动部件而提供优良的稳定性、耐用性、高信息存取速度以及低功耗。具有这种优点的数据存储装置的示例包括通用串行总线(USB)存储器装置、具有各种接口的存储卡以及固态驱动器(SSD)。
SSD可包括闪速存储器组件和控制器,该控制器包括将闪速存储器组件桥接到SSD输入/输出(I/O)接口的电子器件。SSD控制器可包括执行诸如固件的功能组件的嵌入式处理器。SSD功能组件通常是装置特定的,并且在大多数情况下可进行更新。
两种主要类型的闪速存储器以NAND和NOR逻辑门命名。NAND型闪速存储器可以块(或页面)写入和读取,这些块(或页面)通常比整个存储空间小得多。NAND型闪速存储器主要在存储卡、USB闪存驱动器、固态驱动器(SSD)和类似产品中操作以用于数据的一般存储和传送。
如上所述可进行集成的数据存储装置的控制器通常具有主机接口,该主机接口通过例如高速外围组件互连(PCIe)的接口协议与主机装置通信。这种协议由时时变化的技术规范进行定义。较新版本的技术规范可能加入了较新的能力,这些较新的能力可能需要新的逻辑以正确执行。
在这种背景下,提出了本发明的实施例。
发明内容
本发明的实施例提供了一种可配置集成电路(IC),该集成电路能够支持其IC作为组件的新的或更新的装置技术规范所需的新能力。
本发明的一个方面涉及用于向集成电路配置新能力的方法。一种这样的方法包括:针对集成电路创建固件可编程寄存器的组,寄存器的组跨越寄存器编号和功能编号的目标范围以适应新能力;由主机向集成电路发出配置操作请求,配置操作请求包括新能力的寄存器编号和功能编号;检查寄存器编号和功能编号是否处于目标范围内;当寄存器编号和功能编号处于目标范围内时,由集成电路向主机返回该组的目标寄存器的值;由主机更新该值;并且触发固件中断以将该新能力添加到现有能力列表中。
本发明的另一方面包括一种为端点内核启用新能力的系统。该系统包括:固件能力模块,针对新能力定义寄存器空间;以及根联合体(root complex),配置与端点内核的写入和读取事务,包括发出新能力的寄存器编号和功能编号。端点内核被配置成检查寄存器编号和功能编号是否处于寄存器空间内,并且将寄存器空间内的目标寄存器的值返回到根联合体。根联合体被进一步配置成更新该值,并且触发固件中断以将新能力添加到现有能力列表中。
本发明的其它方面包括用于向高速外围组件互连(PCIe)控制器添加新能力的方法,该控制器当前实施由各个主机地址指向的多个能力,最后的能力指向空(null)。一种这样的方法包括:利用固件来重新编程多个能力中的一个,以指向由主机地址定义的地址范围内的新地址;根据新能力的技术规范,利用固件来对与新地址相关联的新定义的寄存器值进行编程;利用固件对位进行编程以定义多个条件;利用固件对目标功能进行编程以对应于物理功能;并且启用主机访问的配置空间以执行配置读取和写入操作并更新新能力的寄存器值。
从以下描述中,本发明另外的方面将变得显而易见。
附图说明
图1是示出根据本发明的实施例的存储器系统的框图。
图2是示出根据本发明的实施例的存储器系统的框图。
图3是示出根据本发明的实施例的存储器系统的存储器装置的存储块的电路图。
图4是示出根据本发明的实施例的高速外围组件互连(PCIe)拓扑的示意图。
图5示出根据本发明的实施例的链接PCI/PCIe能力并使集成电路(IC)能够支持新定义的能力。
图6是示出根据本发明的实施例的使IC能够支持新定义的能力的步骤的流程图。
具体实施方式
以下参照附图更详细地描述各个实施例。然而,本发明可以不同形式实施,因此不应被解释为限于本文阐述的实施例。相反地,提供这些实施例以使本公开是彻底且充分的,并且将本发明的范围全面地传达给本领域技术人员。此外,本文中对“实施例”、“另一实施例”等的参考不一定仅针对一个实施例,并且对任何这种短语的不同参考不一定针对相同的实施例。在整个公开中,相同的附图标记在本发明的附图和实施例中表示相同的部件。
本发明可以多种方式实施,包括作为进程;设备;系统;物质的组成;呈现在计算机可读存储介质上的计算机程序产品;和/或处理器,诸如适于执行存储在联接到处理器的存储器上的指令和/或由联接到处理器的存储器提供的指令的处理器。在本说明书中,这些实施方式或本发明可能采取的任何其它形式可被称为技术。通常,所公开进程的步骤的顺序可在本发明的范围内改变。除非另有说明,否则被描述为适于执行任务的诸如处理器或者存储器的组件可被实施为暂时配置成在给定时间执行任务的一般组件或被制造为执行任务的特定组件。如本文所使用的,术语“处理器”等指适于处理诸如计算机程序指令的数据的一个或多个装置、电路和/或处理内核。
下面提供了本发明的实施例的详细描述以及示出本发明各方面的附图。结合这些实施例描述本发明,但是本发明不限于任何实施例。本发明的范围仅由权利要求限定。本发明包括处于权利要求范围内的许多替换、修改和等同物。为了提供对本发明的全面理解,在下面的描述中阐述了许多具体细节。为了示例的目的提供这些细节,并且可在没有一些或所有这些具体细节的情况下,根据权利要求实施本发明。为了清楚,没有详细描述与本发明相关的技术领域中公知的技术内容,以免不必要地模糊本发明。
图1是示意性地示出根据本发明的实施例的存储器系统的框图。
参照图1,存储器系统10可包括存储器控制器100和半导体存储器装置200,该半导体存储器装置200可代表多于一个这种装置。半导体存储器装置200可以是闪速存储器装置,特别是NAND型的闪速存储器装置。为了简洁,有时将存储器控制器100简称为控制器100,并且有时将半导体存储器装置200简称为存储器装置200。如图1所示,主机装置5可联接到存储器系统10。
存储器控制器100可控制存储器装置200的全部操作。
存储器装置200可在存储器控制器100的控制下执行一个或多个擦除操作、编程操作和读取操作。存储器装置200可通过输入/输出(I/O)线接收命令CMD、地址ADDR和数据DATA。存储器装置200可通过电源线接收电力PWR,并且通过控制线接收控制信号CTRL。控制信号CTRL可包括命令锁存启用(CLE)信号、地址锁存启用(ALE)信号、芯片启用(CE)信号、写入启用(WE)信号、读取启用(RE)信号等。
存储器控制器100和半导体存储器装置200可被集成在诸如固态驱动器(SSD)的单个半导体装置中。SSD可包括用于在其中存储数据的存储装置。当存储器系统10被用在SSD中时,联接到存储器系统10的主机5的操作速度可显著提升。
在另一实施例中,存储器控制器100和半导体存储器装置200可被集成在诸如存储卡的单个半导体装置中。例如,存储器控制器100和半导体存储器装置200可进行集成以配置:个人计算机存储卡国际协会(PCMCIA)的PC卡、紧凑式闪存(CF)卡、智能媒体(SM)卡、记忆棒、多媒体卡(MMC)、缩小尺寸的多媒体卡(RS-MMC)、微型版本的MMC(微型MMC)、安全数字(SD)卡、迷你安全数字(迷你SD)卡、微型安全数字(微型SD)卡、高容量安全数字(SDHC)卡和/或通用闪存(UFS)。
在另一实施例中,存储器系统10可被提供为诸如以下的电子装置中的各种组件中的一种:计算机、超移动PC(UMPC)、工作站、上网本计算机、个人数字助理(PDA)、便携式计算机、网络平板PC、无线电话、移动电话、智能电话、电子书阅读器、便携式多媒体播放器(PMP)、便携式游戏装置、导航装置、黑盒、数码相机、数字多媒体广播(DMB)播放器、三维电视、智能电视、数字音频记录器、数字音频播放器、数字图片记录器、数字图片播放器、数字视频记录器、数字视频播放器、数据中心的存储装置、能够在无线环境中接收和发送信息的装置、射频识别(RFID)装置以及家庭网络的各种电子装置中的一种、计算机网络的各种电子装置中的一种、远程信息处理网络的各种电子装置中的一种或计算系统的各种组件中的一种。
图2是示出根据本发明的实施例的存储器系统的详细框图。例如,图2的存储器系统可描述图1所示的存储器系统10。
参照图2,存储器系统10可包括存储器控制器100和半导体存储器装置200。存储器系统10可响应于来自例如图1的主机装置5的主机装置的请求而操作,并且特别地,存储待由主机装置访问的数据。
主机装置5可利用各种类型电子装置中的任意一种来实施。在一些实施例中,主机装置5可包括诸如以下的电子装置:台式计算机、工作站、三维(3D)电视、智能电视、数字音频记录器、数字音频播放器、数字图片记录器、数字图片播放器、和/或数字视频记录器以及数字视频播放器。在一些实施例中,主机装置5可包括诸如以下的便携式电子装置:移动电话、智能电话、电子书、MP3播放器、便携式多媒体播放器(PMP)和/或便携式游戏机。
存储器装置200可存储待由主机装置5访问的数据。
存储器装置200可利用诸如动态随机存取存储器(DRAM)和/或静态随机存取存储器(SRAM)的易失性存储器装置或诸如只读存储器(ROM)、掩模ROM(MROM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、铁电随机存取存储器(FRAM)、相变RAM(PRAM)、磁阻RAM(MRAM)和/或电阻式RAM(RRAM)的非易失性存储器装置来实施。
控制器100可控制数据在存储器装置200中的存储。例如,控制器100可响应于来自主机装置5的请求来控制存储器装置200。控制器100可将从存储器装置200读取的数据提供到主机装置5并可将从主机装置5提供的数据存储到存储器装置200中。
控制器100可包括通过总线160联接的存储装置110、可被实施为例如中央处理单元(CPU)的处理器的控制组件120、错误校正码(ECC)组件130、主机接口(I/F)140和存储器接口(I/F)150。
存储装置110可用作存储器系统10和控制器100的工作存储器,并且存储用于驱动存储器系统10和控制器100的数据。当控制器100控制存储器装置200的操作时,存储装置110可存储由控制器100和存储器装置200用于诸如读取操作、写入操作、编程操作和擦除操作的操作的数据。
存储装置110可利用诸如静态随机存取存储器(SRAM)和/或动态随机存取存储器(DRAM)的易失性存储器实施。
如上所述,存储装置110可将主机装置5使用的数据存储在存储器装置200中,以用于读取操作和写入操作。为了存储数据,存储装置110可包括程序存储器、数据存储器、写入缓冲器、读取缓冲器、映射缓冲器等。
控制组件120可控制存储器系统10的一般操作,以及响应于来自主机装置5的写入请求或读取请求控制用于存储器装置200的写入操作或读取操作。控制组件120可驱动固件125来控制存储器系统10的一般操作。固件125可以是闪存转换层(FTL)的形式,其可执行诸如逻辑到物理(L2P)映射、损耗均衡、垃圾收集和/或坏块处理的操作。L2P映射称为逻辑块寻址(LBA)。固件125还可用于为集成电路(IC)启用新定义的能力,如下所述。
ECC组件130可检测并校正在读取操作期间从存储器装置200读取的数据中的错误。当错误位的数量大于或等于可校正错误位的阈值数量时,ECC组件130可不校正错误位,并且相反地,可输出指示校正错误位失败的错误校正失败信号。
ECC组件130可基于诸如以下的编码调制来执行错误校正操作:低密度奇偶校验(LDPC)码、博斯-查德胡里-霍昆格姆(Bose-Chaudhuri-Hocquenghem,BCH)码、turbo码、turbo乘积码(TPC)、里德-所罗门(Reed-Solomon,RS)码、卷积码、递归系统码(RSC)、网格编码调制(TCM)、分组编码调制(BCM)。
主机接口140可通过诸如以下的各种接口协议中的一种或多种与主机装置5通信:通用串行总线(USB)、多媒体卡(MMC)、高速外围组件互连(PCIe)、小型计算机系统接口(SCSI)、串列SCSI(SAS)、串行高级技术附件(SATA)、并行高级技术附件(PATA)、增强型小型磁盘接口(ESDI)以及电子集成驱动器(IDE)。本发明是在PCIe的背景下描述的,但本发明不限于PCIe。这些原理适用于包括上述协议的其它协议。
存储器接口150可提供在控制器100和存储器装置200之间的接口,以允许控制器100响应于来自主机装置5的请求来控制存储器装置200。存储器接口150可在控制组件或CPU 120的控制下生成用于存储器装置200的控制信号并处理数据。当存储器装置200是诸如NAND闪速存储器的闪速存储器时,存储器接口150可在CPU 120的控制下生成用于存储器的控制信号并处理数据。
存储器装置200可包括存储器单元阵列210、控制电路220、电压生成电路230、行解码器240、可以是页面缓冲器阵列形式的页面缓冲器250、列解码器260和输入/输出电路270。存储器单元阵列210可包括可存储数据的多个存储块211。电压生成电路230、行解码器240、页面缓冲器(阵列)250、列解码器260和输入/输出电路270可形成存储器单元阵列210的外围电路。外围电路可执行存储器单元阵列210的编程操作、读取操作或擦除操作。控制电路220可控制外围电路。
电压生成电路230可生成各种电平的操作电压。例如,在擦除操作中,电压生成电路230可生成各种电平的操作电压,诸如擦除电压和通过电压。
行解码器240可与电压生成电路230和多个存储块211电通信。行解码器240可响应于由控制电路220生成的行地址RADD而在多个存储块211中选择至少一个存储块,并将从电压生成电路230提供的操作电压传送到所选择的存储块。
页面缓冲器(阵列)250可通过位线BL与存储器单元阵列210电通信(如图3所示)。响应于由控制电路220生成的页面缓冲器控制信号,页面缓冲器(阵列)250可利用正电压对位线BL进行预充电,在编程操作和读取操作中向选择的存储块传送数据,并且从选择的存储块接收数据,或者临时存储传送的数据。
列解码器260可向页面缓冲器(阵列)250传送数据,并且从页面缓冲器(阵列)250接收数据,并且还可与输入/输出电路270交换数据。
输入/输出电路270可向控制电路220传送从外部装置(例如,存储器控制器100)接收的命令和地址,通过输入/输出电路270将数据从外部装置传送到列解码器260,或将数据从列解码器260输出到外部装置。
控制电路220可响应于命令和地址来控制外围电路。
图3是示出根据本发明的实施例的半导体存储器装置的存储块的电路图。例如,图3的存储块可以是图2所示的存储器单元阵列210的存储块211中的任意一个。
参照图3,示例性存储块211可包括联接到行解码器240的多个字线WL0至WLn-1、漏极选择线DSL和源极选择线SSL。这些线可并行地布置,其中多个字线处于DSL与SSL之间。
示例性存储块211可进一步包括分别联接到位线BL0至BLm-1的多个单元串221。每列的单元串可包括一个或多个漏极选择晶体管DST和一个或多个源极选择晶体管SST。在所示实施例中,每个单元串具有一个DST和一个SST。在单元串中,多个存储器单元或存储器单元晶体管MC0至MCn-1可串联联接在选择晶体管DST和SST之间。存储器单元中的每一个可被形成为存储多位数据信息的多层单元(MLC)。
每个单元串中的SST的源极可联接到公共源极线CSL,并且每一个DST的漏极可联接到对应的位线。单元串中SST的栅极可联接到SSL,并且单元串中的DST的栅极可联接到DSL。跨越单元串的存储器单元的栅极可联接到各自的字线。也就是说,存储器单元MC0的栅极联接到相应的字线WL0,存储器单元MC1的栅极联接到相应的字线WL1等。联接到特定字线的存储器单元组可被称为物理页面。因此,存储块211中的物理页面的数量可对应于字线的数量。
如前所述,页面缓冲器250可以是包括联接到位线BL0至BLm-1的多个页面缓冲器251的页面缓冲器阵列的形式。页面缓冲器251可响应于页面缓冲器控制信号进行操作。例如,在读取或验证操作期间,页面缓冲器251可临时存储通过位线BL0至BLm-1接收的数据,或者感测位线的电压或电流。
在一些实施例中,存储块211可包括NAND型闪速存储器单元。然而,存储块211不限于这种单元类型,而是可包括NOR型闪速存储器单元。存储器单元阵列210可被实施为混合闪速存储器或1-NAND闪速存储器,其中混合闪速存储器中组合了两种或更多种类型的存储器单元,1-NAND闪速存储器中控制器嵌入在存储器芯片内部。
如前所述,定义例如通信协议的各种协议的技术规范时常改变。基于装置在该协议下操作的组件的发展,这种改变通常需要新能力。这些新能力通常涉及新的逻辑。然而,诸如IC或专用集成电路(ASIC)的任何现有组件通常不支持新能力。在接下来的讨论中,IC旨在包括ASIC。
因此,本发明提供了使IC能够支持新能力而不需要重新设计该IC的技术。这样,本发明有利地节省了时间和资源。
通常,这些技术涉及针对目标IC,即正在配置的IC,创建新的寄存器范围。对于新创建的寄存器范围,执行固件FW以填充每个寄存器的初始值,以及设置读取、写入和保留权限。例如主机装置5的主机能够从这些寄存器中的每一个中读取和向这些寄存器中的每一个写入,就像对现有能力的现有寄存器一样。在主机装置5写入新值之后,主机装置5触发对固件的中断,以允许固件正确匹配新能力的要求。
参照图4,示出高速外围组件互连(PCIe)拓扑40的示例。根联合体(RC)41与端点(EP)内核42通信,以配置读取和写入能力。RC 41和EP内核42可分别对应于PCIe主机和IC(或ASIC)。用以定义FW能力的固件能力(FWCAP)模块43与EP内核42通信以配置读取和写入能力。FWCAP模块43响应于来自主机5的中断触发而向固件(FW)发出中断。
如图4所示,例如ASIC的IC 42实施寄存器的组,这些寄存器是固件(FW)可编程的。在所示的实施例中,寄存器空间为0x40,其实施多达16种能力(一种能力至少为1DW),并且由例如RC 41的PCIe主机可访问。然而,能力的实际数量取决于技术规范。一种能力通常为3DW或4DW,并且最小为1DW(32个位)。
为了支持只读/RW/保留寄存器位权限,创建了另外两组寄存器FWCTLB、FWCTLA。当相应的FWCTLB[i]和FWCTLA[i]=2'b00时,这定义针对PCIe主机只读(RO)。2'b01表示读取/写入(RW)。2'b10表示保留(Rsvd或RSVD)。2'b11表示读取和写入一以清除(read and writeone to clear,RW1C)。
当PCIe主机41向IC 42发出配置读取/写入事务时,配置读取/写入周期也到达这些固件可控寄存器。逻辑检查目标寄存器编号和目标功能编号是否处于期望范围内。如果处于(命中),则该值返回到PCIe主机41。如果不处于,则无响应或零数据返回到PCIe主机41。
在PCIe主机41配置写入并更新特定固件可控寄存器的值之后,逻辑可触发对固件的中断,以使其采取适当的动作来实现对IC 42的这种新添加的能力的技术规范要求。
所定义的寄存器空间应当只对预期的寄存器编号和功能编号做出正确响应。准确的寄存器编号将是固件可编程的。如果固件程序的目标是寄存器编号为0x600(REGBASE),则0x600至0x63F内的寄存器编号将提供正确的响应。
逻辑确定传入的寄存器编号是否大于寄存器基数(REGBASE)但小于REGBASE+0x40。如果大于,则逻辑将把寄存器值返回到PCIe主机41。如果不大于,则零数据返回到PCIe主机41。系统设计确定了如何使零数据返回成为可能。
功能编号检查对于多功能装置或单根I/O虚拟化(SRIOV)装置尤其重要。逻辑可选择编程一个目标功能编号或数个功能编号,或者编程一个位以使所有功能成为目标。在SRIOV装置中,一些能力在物理功能驱动器(PF)和所有虚拟功能驱动器(VF)之间共享。在这种情况下启用全部功能特征是有用的。
PCIe定义了多种寄存器类型。将寄存器分为4种类型(RO、RW、RW1C、RSVD)足以满足大多数要求。对于RO位而言,重要的是逻辑确保PCIe主机41的配置写入不会改变寄存器值。对于RW1C位而言,逻辑必须确保主机配置读取写入将实现预期效果。
在两个位用于权限控制并且传入的配置读取/写入事务位用于写入数据的情况下,实施主机访问权限相当简单。如本领域技术人员将理解的,也可实施更为复杂的类型。
在写入能力位之后,PCIe主机41通知固件,使得固件可根据IC42的技术规范的要求来采取适当的动作。这扩展了寄存器的能力。
对于固件可控能力,实现更复杂的硬件动作是不现实的(除非使用可编程逻辑范式,这表示更大的逻辑门数和时序要求)。固件动作更加灵活和易于实施。逻辑可创建屏蔽位(mask bit),以允许哪些寄存器位的改变触发中断。
图4指示存在64个可编程的寄存器。该数量可根据设计考虑而增加或减少。
图5示出PCI/PCIe能力列表的示例。应当将所有能力链接在一起。第一PCIe能力可以是从0x100开始,最后的能力为空(Null)。在实施该固件能力之后,固件将先前能力的“下一指针”编程为REGBASE。例如,在图5中,PCIe CAP3的下一指针为REGBASE。新定义的固件可控能力的下一指针为PCIe CAP_END。
参照图5,作为示例,假设可以是图1和图2中的控制器100的实施例的PCIe控制器已实施PCIe CAP1、PCIe CAP2、PCIe CAP3和PCIe CAP_END。由0x100指向PCIe CAP1,由0x200指向PCIe CAP2,由0x300指向PCIe CAP3,由0x900指向PCIe CAP_END,而PCIe CAP_END指向空。在没有新定义的固件能力的情况下,PCIe CAP3的下一指针为0x900,即CAP_END。
根据本发明的实施例,固件被用来启用由主机地址0x600访问的新定义的能力。
固件将PCIe CAP3的下一指针编程为0x600。
固件按照技术规范要求对PCIe CPA的“新定义的”寄存器值进行编程。
固件对FWCTLB和FWCTLA位进行编程,使得一些位为RO,一些为RW,一些为RW1C,并且一些为保留的。
固件将目标功能编程为0,使得仅物理功能具有该能力。
在上述步骤之后,固件启用主机访问的配置空间。
在枚举期间,主机41找到PCIe CAP3的下一能力为0x600。此外,该能力内容是新定义的能力。新定义的PCIe的下一指针为CAP_END。
主机41对该新定义的能力采取适当的动作,并且配置读取/写入。寄存器值将相应地改变。中断被发送到固件。因此,固件知道新能力内容更新,并且根据技术规范要求采取适当的动作。
图6是描述根据本发明的实施例的向集成电路配置新能力的步骤的流程图。流程图600所示的步骤是示例性的。本领域的技术人员将理解的是,可执行另外的和/或可选的步骤,或者可改变步骤的顺序,以在不脱离本文公开的发明构思的情况下实现本发明的各个方面。参照其它附图,特别是参照图4和图5来描述图6。
参照图6,在步骤601,创建固件可编程寄存器的组以适应新能力。这种寄存器跨越寄存器编号和功能编号的目标范围。然后,在步骤602,例如主机的RC 41向例如IC的EP 42发出配置操作请求。这种请求可以是配置写入和读取请求。这些请求包括用于新能力的寄存器编号和功能编号。在步骤603,EP 42检查寄存器编号和功能编号是否处于目标范围内。如果处于,则在步骤604,EP 42将该组的目标寄存器的值返回到RC 41。然后,在步骤605,RC41更新该值。在步骤606,发出固件中断,以使固件能够将新能力添加到能力列表中。
如上所述,本发明的实施例提供了一种诸如ASIC的可配置IC,其能够支持添加的能力,而不必重新设计IC。这节省了大量资源。
虽然为了清楚和理解的目的已经详细描述了前述实施例,但是本发明不限于所提供的细节。正如本领域技术人员根据前述公开内容将理解的,存在许多实施本发明的可选方式。因而所公开的实施例是说明性的,而非限制性的。

Claims (14)

1.一种向集成电路配置新能力的方法,所述方法包括:
针对集成电路创建固件可编程寄存器的组,所述寄存器的组跨越寄存器编号和功能编号的目标范围以适应新能力;
由主机向所述集成电路发出配置操作请求,所述配置操作请求包括所述新能力的寄存器编号和功能编号;
检查所述寄存器编号和所述功能编号是否处于所述目标范围内;
当所述寄存器编号和所述功能编号处于所述目标范围内时,由所述集成电路向所述主机返回所述组的目标寄存器的值;
由所述主机更新所述值;并且
触发固件中断,以将所述新能力添加到现有能力的列表中。
2.根据权利要求1所述的方法,其中所述寄存器的组包括多个寄存器类型。
3.根据权利要求2所述的方法,其中所述多个寄存器类型包括读取/写入即RW、只读即RO、读取/写入1以清除即RW1C以及保留即RSVD。
4.根据权利要求1所述的方法,其中所述更新进一步包括为所述目标寄存器设置权限。
5.根据权利要求4所述的方法,其中所述权限包括读取、写入和保留权限。
6.一种为端点内核启用新能力的系统,所述系统包括:
固件能力模块,针对所述新能力定义寄存器空间;
根联合体,配置与所述端点内核的写入和读取事务,包括发出所述新能力的寄存器编号和功能编号;
所述端点内核检查所述寄存器编号和所述功能编号是否处于所述寄存器空间内,并且将所述寄存器空间内的目标寄存器的值返回到所述根联合体;
所述根联合体进一步更新所述值,并且触发固件中断以将所述新能力添加到现有能力的列表中。
7.根据权利要求6所述的系统,其中所述根联合体是高速外围组件互连主机即PCIe主机,并且所述端点内核是专用集成电路即ASIC。
8.根据权利要求6所述的系统,其中所述寄存器空间包括多个寄存器类型。
9.根据权利要求8所述的系统,其中所述多个寄存器类型包括读取/写入即RW、只读即RO、读取/写入1以清除即RW1C以及保留即RSVD。
10.根据权利要求6所述的系统,其中所述更新操作进一步包括为所述目标寄存器设置读取、写入和保留权限。
11.一种向高速外围组件互连控制器添加新能力的方法,所述高速外围组件互连控制器即PCIe控制器,所述控制器当前实施由各个主机地址指向的多个能力,所述多个能力中的最后一个指向空,所述方法包括:
利用固件来重新编程所述多个能力中的一个,以指向由所述主机地址定义的地址范围内的新地址;
根据所述新能力的技术规范,利用所述固件来对与所述新地址相关联的新定义的寄存器值进行编程;
利用所述固件对位进行编程以定义多个条件;
利用所述固件来对目标功能进行编程以对应于物理功能;并且
启用主机访问的配置空间以执行配置读取和写入操作并更新所述新能力的寄存器值。
12.根据权利要求11所述的方法,进一步包括向所述固件发出中断。
13.根据权利要求12所述的方法,进一步包括将所述新能力与所述新能力的技术规范相匹配。
14.根据权利要求11所述的方法,其中对位进行编程以定义多个条件包括编程第一组位以定义只读即RO,编程第二组位以定义读取/写入即RW,编程第三组位以定义写入一以清除即RW1C,以及编程第四组位以定义保留即RSVD。
CN201911107984.2A 2018-11-13 2019-11-13 支持新能力的可配置集成电路 Active CN111177041B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201862760107P 2018-11-13 2018-11-13
US62/760,107 2018-11-13

Publications (2)

Publication Number Publication Date
CN111177041A CN111177041A (zh) 2020-05-19
CN111177041B true CN111177041B (zh) 2023-05-16

Family

ID=70550556

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911107984.2A Active CN111177041B (zh) 2018-11-13 2019-11-13 支持新能力的可配置集成电路

Country Status (2)

Country Link
US (1) US11449357B2 (zh)
CN (1) CN111177041B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11734217B2 (en) * 2021-12-13 2023-08-22 Xilinx, Inc. Software or firmware managed hardware capability and control configuration for PCIe devices
US20220156211A1 (en) * 2021-12-22 2022-05-19 Intel Corporation Dynamic provisioning of pcie devices at run time for bare metal servers

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7257714B1 (en) * 1999-10-19 2007-08-14 Super Talent Electronics, Inc. Electronic data storage medium with fingerprint verification capability
US7711859B2 (en) 2005-08-17 2010-05-04 American Megatrends, Inc. Facilitating the configuration of new PCI devices during post
JP2009267771A (ja) * 2008-04-25 2009-11-12 Hitachi Ltd 情報処理装置及びパス制御方法
US9852087B2 (en) * 2010-04-20 2017-12-26 Avago Technologies General Ip (Singapore) Pte. Ltd. Inline PCI-IOV adapter
JP5633306B2 (ja) * 2010-10-29 2014-12-03 株式会社リコー ライセンス管理システム、機能提供装置、ライセンス管理方法、及びライセンス管理プログラム
US9146890B1 (en) * 2013-01-25 2015-09-29 Pmc—Sierra Us, Inc. Method and apparatus for mapped I/O routing in an interconnect switch
US9361027B1 (en) * 2014-12-16 2016-06-07 Texas Instruments Incorporated System and method for fast modification of register content
US10922252B2 (en) * 2015-06-22 2021-02-16 Qualcomm Incorporated Extended message signaled interrupts (MSI) message data
US10482038B2 (en) * 2015-07-24 2019-11-19 SK Hynix Inc. Programmable protocol independent bar memory for SSD controller
US10372493B2 (en) * 2015-12-22 2019-08-06 Intel Corporation Thread and/or virtual machine scheduling for cores with diverse capabilities
US9996280B2 (en) * 2016-03-15 2018-06-12 Sandisk Technologies Llc Data register copying for non-volatile storage array operations
US10360370B2 (en) * 2016-07-22 2019-07-23 Hewlett Packard Enterprise Development Lp Authenticated access to manageability hardware components

Also Published As

Publication number Publication date
US20200151000A1 (en) 2020-05-14
US11449357B2 (en) 2022-09-20
CN111177041A (zh) 2020-05-19

Similar Documents

Publication Publication Date Title
US10180805B2 (en) Memory system and operating method thereof
US11163679B2 (en) Garbage collection strategy for memory system and method of executing such garbage collection
US10482038B2 (en) Programmable protocol independent bar memory for SSD controller
US11532372B2 (en) Remote SSD debug via host/serial interface and method of executing the same
KR102430791B1 (ko) 컨트롤러 및 컨트롤러의 동작방법
CN107919157A (zh) 存储器装置及存储器装置的操作方法
KR20180008951A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
US10089255B2 (en) High performance host queue monitor for PCIE SSD controller
CN110968522B (zh) 存储器系统及其操作方法、包括存储器系统的数据库系统
CN108733616B (zh) 包括多处理器的控制器及其操作方法
US10169289B2 (en) Memory system and method for accelerating boot time
US20160334999A1 (en) Reduction of maximum latency using dynamic self-tuning for redundant array of independent disks
CN109800178B (zh) 垃圾收集方法以及用于混合地址映射的存储器系统
US20220261182A1 (en) Superblock linkage systems and method for asymmetric die packages
CN116107767A (zh) 包括多处理器的控制器及其操作方法
CN111177041B (zh) 支持新能力的可配置集成电路
CN110277124B (zh) 具有混合解码方案的存储器系统及其操作方法
US9946644B2 (en) Memory system and operating method thereof
US10671323B2 (en) Memory system with shared buffer architecture for multiple decoders and method of operating such memory system
CN109947360B (zh) 存储器系统及其操作方法
US11204839B2 (en) Memory system with low-latency read recovery and method of operating the memory system
US11087846B1 (en) Memory system with single decoder, multiple memory sets and method for decoding multiple codewords from memory sets using the single decoder
CN110941567B (zh) 存储器控制器及其操作方法
US20200142793A1 (en) Memory system for handling program error and method thereof
CN112216328A (zh) 具有低复杂度解码的存储器系统及其操作方法

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