存储器管理设备、系统和方法与流程

文档序号:23423054发布日期:2020-12-25 11:49阅读:143来源:国知局
存储器管理设备、系统和方法与流程
本公开总体上涉及在处理系统(诸如实现深度机器学习系统的嵌入式系统)中的存储器配置和管理,该处理系统具有一个或多个处理核,该一个或多个处理核运行共享存储器的多个进程。例如,本公开涉及实现诸如卷积神经网络(cnn)的人工神经网络(ann)的嵌入式系统。
背景技术
:处理核以及包括处理核的设备和系统(诸如处理器、移动电话、平板计算机、笔记本计算机、台式计算机、嵌入式处理系统等)通常可以包括一个或多个存储器,诸如高速缓存存储器、主存储器、辅助存储器等。存储器可以例如使用可以是易失性存储器或非易失性存储器的一个或多个随机存取存储器(ram)来实现。ram可以被组织为与存储器中的数据地址相对应的行和列。存储器可以是共享存储器,其可以例如由多个处理核、多个进程(诸如主机系统进程、应用进程等)使用。这种处理系统可以使用一个或多个集成电路来实现。集成电路可以包括例如处理核、存储器阵列、存储器控制器、分立电路装置等及其各种组合。集成电路中的存储器阵列可能包含制造缺陷,这些缺陷可能导致存储器阵列的一个或多个单元在统计上无法准确存储数据。另外,存储器阵列的存储器单元可能随时间而发生故障。为此,存储器阵列可能在多余行或列中或在这两者中都包含备用单元,这些备用单元可以用于替换存储器阵列中的故障行或故障列。集成电路可以作为制造进程的一部分(例如,以电子晶片分类(ews)级)进行测试,或者在制造进程之后进行周期性地测试,以标识集成电路的存储器阵列的故障行和故障列。例如,可以采用探针测试、内置自测试(bist)等电路装置和测试例程。可以使用阈值(例如,超过阈值数目的、行或列中的故障单元数目)、统计分析(例如,超过阈值可能性的、诸如纠错编码之类的纠错技术无法校正行或列中的错误的可能性)等以及其各种组合来标识故障行或故障列或两者。例如,各种数据模式可以加载到存储器阵列中并且从存储器阵列中读取,并且从存储器阵列中读取的数据可以被分析以标识翻转位。翻转位信息可以用于基于统计分析来标识存储器阵列中的故障行和故障列。如果行或列被标识为不可用,则可以通过使用备用行或备用列中的一个备用行或备用列替换故障行或故障列来修复存储器阵列。标识故障行或故障列的信息被存储,使得那些行和列不会用于存储数据。当故障行或故障列的数目太大(例如,超过阈值数目或统计芯片故障概率)时,因为包括存储器阵列的集成电路具有太多不可修复的故障,所以它被确定为不合适,并且要么被丢弃要么可能全部重新利用(例如,被设计为具有6gb存储器阵列的集成电路可以重新用作4gb存储器阵列)。技术实现要素:处理系统(诸如实现ann的嵌入式系统)可能会使用大量存储器。在片上而非片外实现存储器可以节省大量功率,从而促进在诸如移动设备之类的嵌入式应用中使用ann和其他存储器密集型应用。然而,增加片上存储器的量可能会导致大量产出损失。例如,由于不可修复的存储器缺陷,所以在制造进程期间数目增加的晶片和芯片可能被拒绝。可以采用增加的冗余存储器来减少产出损失,从而进一步增加专用于存储器的芯片区域。另外,在以较低的操作电压操作时,存储器在统计上更有可能发生故障。在一个实施例中,一种设备包括:一个或多个存储器单元,其在操作中存储指示存储器阵列的区域的可靠性类型的信息;以及存储器管理电路装置,其被耦合到一个或多个存储器单元,其中存储器管理电路装置在操作中通过以下方式对用于将存储器阵列中的存储器分配给进程的请求做出响应:确定与用于分配存储器的请求相关联的请求类型;以及基于与用于分配存储器的请求相关联的请求类型和指示存储器阵列的区域的可靠性类型的所存储的信息来将存储器阵列中的存储器分配给该进程。在一个实施例中,一个或多个存储器单元包括熔丝库。在一个实施例中,每个熔丝与存储器阵列的相应区域相关联。在一个实施例中,一个或多个单元在操作中存储指示存储器阵列的区域的可靠性类型的信息作为存储器映射。在一个实施例中,确定请求类型包括:确定与该请求相关联的进程的类型。在一个实施例中,存储器阵列是共享存储器阵列,并且存储器管理电路装置在操作中:通过从存储器阵列的一个或多个区域中分配所存储的可靠性信息指示具有第一可靠性类型的区域,对从主机系统进程接收的请求做出响应。在一个实施例中,存储器管理电路装置在操作中:通过从存储器阵列的一个或多个区域中分配所存储的可靠性信息指示具有第一可靠性类型或第二可靠性类型的区域,对从应用进程接收的请求做出响应,第二可靠性类型指示该区域不如具有第一可靠性类型的区域可靠。在一个实施例中,存储器管理电路装置在操作中:通过从存储器阵列的一个或多个区域中分配所存储的可靠性信息指示具有第一可靠性类型的区域,对从人工神经网络(ann)控制进程接收的请求做出响应;以及通过从存储器阵列的一个或多个区域分配所存储的可靠性信息指示具有第一可靠性类型或第二可靠性类型的区域,对来自ann进程的请求做出响应,以将存储器分配给存储器缓冲器以存储内核数据、中间部分和、或特征数据,第二可靠性类型指示该区域不如具有第一可靠性类型的区域可靠。在一个实施例中,指示存储器阵列的区域的可靠性类型的所存储的信息指示与存储器阵列的区域相关联的多个可靠性水平中的一个可靠性水平。在一个实施例中,存储器阵列被组织为存储器单元的行和列,并且区域是存储器阵列的行。在一个实施例中,该设备包括内置自测试电路装置,其在操作中周期性地:测试存储器阵列;并且基于测试的结果来更新指示存储器阵列的区域的可靠性的所存储的信息。在一个实施例中,一个或多个存储器单元包括共享存储器阵列中的切口。在一个实施例中,一个或多个存储器单元包括非易失性存储器的单元。在一个实施例中,存储器阵列包括非易失性存储器单元的阵列。在一个实施例中,非易失性存储器单元的阵列包括以下项中的一项或多项:sram存储器单元;reram存储器单元;以及fram存储器单元。在一个实施例中,非易失性存储器单元的阵列包括一个或多个多级reram存储器单元。在一个实施例中,一种系统包括:存储器阵列;以及存储器管理电路装置,其被耦合到存储器阵列,其中存储器管理电路装置在操作中通过以下方式对用于将存储器阵列中的存储器分配给多个进程中的进程的请求做出响应:确定与用于分配存储器的请求相关联的请求类型;以及基于与用于分配存储器的请求相关联的请求类型和指示存储器阵列的区域的可靠性类型的所存储的信息来将存储器阵列中的存储器分配给该进程。在一个实施例中,存储器管理电路装置包括熔丝库,其在操作中存储指示存储器阵列的区域的可靠性类型的信息。在一个实施例中,每个熔丝与存储器阵列的相应区域相关联。在一个实施例中,确定请求类型包括:确定与该请求相关联的进程的类型。在一个实施例中,系统包括一个或多个处理核,其执行多个进程;并且存储器管理电路装置在操作中:通过从存储器阵列的一个或多个区域中分配所存储的可靠性信息指示具有第一可靠性类型的区域,对从多个进程中的主机系统进程接收的请求做出响应。在一个实施例中,存储器管理电路装置在操作中:通过从存储器阵列的一个或多个区域中分配所存储的可靠性信息指示具有第一可靠性类型的区域,对从人工神经网络(ann)控制进程接收的请求做出响应;以及通过从存储器阵列的一个或多个区域分配所存储的可靠性信息指示具有第一可靠性类型或第二可靠性类型的区域,对来自ann进程的请求做出响应,以将存储器分配给存储器缓冲器以存储内核数据、中间部分和、或特征数据,第二可靠性类型指示该区域不如具有第一可靠性类型的区域可靠。在一个实施例中,指示存储器阵列的区域的可靠性类型的所存储的信息指示与存储器阵列的区域相关联的多个可靠性水平中的一个可靠性水平。在一个实施例中,一种方法包括:存储指示存储器阵列的区域的可靠性类型的信息;并且通过以下方式对用于将存储器阵列中的存储器分配给多个进程中的进程的请求做出响应:确定与用于分配存储器阵列中的存储器的请求相关联的请求类型;以及基于与用于分配存储器阵列中的存储器的请求相关联的请求类型和指示存储器阵列的区域的可靠性类型的所存储的信息来将存储器阵列中的存储器分配给该进程。在一个实施例中,存储指示共享存储器阵列的区域的可靠性类型的信息包括:熔断与存储器阵列相关联的熔丝库中的熔丝。在一个实施例中,确定请求类型包括:确定与请求相关联的进程的类型。在一个实施例中,该方法包括:通过从存储器阵列的一个或多个区域中分配所存储的可靠性信息指示具有第一可靠性类型的区域,对从多个进程中的主机系统进程接收的请求做出响应。在一个实施例中,该方法包括:通过从存储器阵列的一个或多个区域中分配所存储的可靠性信息指示具有第一可靠性类型的区域,对从人工神经网络(ann)控制进程接收的请求做出响应;以及通过从存储器阵列的一个或多个区域分配所存储的可靠性信息指示具有第一可靠性类型或第二可靠性类型的区域,对来自ann进程的请求做出响应,以将存储器分配给存储器缓冲器以存储内核数据、中间部分和、或特征数据,第二可靠性类型指示该区域不如具有第一可靠性类型的区域可靠。在一个实施例中,该方法包括:测试存储器阵列;以及基于测试的结果来生成指示存储器阵列的区域的可靠性类型的所存储的信息。在一个实施例中,测试以晶片级(waferlevel)执行。在一个实施例中,该方法包括:重新测试存储器阵列;以及基于重新测试的结果来更新指示存储器阵列的区域的可靠性类型的所存储的信息。在一个实施例中,一种非暂态计算机可读介质具有以下内容,该内容使得存储器管理电路装置通过以下方式对用于将存储器阵列中的存储器分配给多个进程中的进程的请求做出响应:确定与用于分配存储器阵列中的存储器的请求相关联的请求类型;以及基于与用于分配存储器阵列中的存储器的请求相关联的请求类型和指示存储器阵列的区域的可靠性类型的所存储的信息来将存储器阵列中的存储器分配给进程。在一个实施例中,内容包括由存储器管理电路装置执行的指令。在一个实施例中,多个进程包括主机系统进程和人工神经网络进程。附图说明图1是根据一个实施例的具有处理核和存储器的电子设备或系统的一个实施例的功能框图。图2是实现人工神经网络的电子设备或系统的一个实施例的功能框图。图3图示了存储器的一个实施例。图4图示了存储器阵列的一个实施例。图5图示了生成区域可靠性类型存储器映射的方法的一个实施例。图6图示了基于区域可靠性类型信息来将存储器阵列中的存储器分配给进程的方法的一个实施例。具体实施方式在以下描述中,对某些细节进行阐述,以便提供对设备、系统、方法和物品的各种实施例的透彻理解。然而,本领域技术人员应当理解,可以在没有这些细节的情况下实践其他实施例。在其他实例中,为了避免不必要地使实施例的描述晦涩难懂,一些附图中未详细示出或描述与例如电路相关联的众所周知的结构(诸如晶体管、乘法器、加法器、除法器、比较器、晶体管、集成电路、逻辑门、有限状态机、存储器、接口,总线系统等)和方法。除非上下文另外要求,否则在以下的整个说明书和权利要求书中,词语“包括(comprise)”及其变型(诸如“comprising”和“comprises”)应以开放的包容性的意义来解释,也就是说,“包括但不仅限于”。除非上下文另外指出,否则对“至少一个”的引用应被解释为意指析取性和包容性之一或两者。在整个说明书中,对“一个实施例”或“一实施例”的引用意指结合该实施例所描述的特定特征、结构或特点包括在至少一个实施例中。因此,在整个说明书中各个地方出现的短语“在一个实施例中”或“在实施例中”不一定是指同一实施例或所有实施例。更进一步地,在一个或多个实施例中,可以以任何合适的方式组合特定特征、结构或特点以获得其他实施例。提供标题仅是为了方便,并不解释本公开的范围或含义。附图中元件的尺寸和相对位置不必按比例绘制。例如,各种元件的形状和角度未按比例绘制,并且对这些元件中的一些元件进行放大和定位以提高附图可读性。进一步地,所绘制的元件的特定形状不一定旨在传达有关特定元件的实际形状的任何信息,仅为了便于在附图中识别而选择。图1是将被描述的实施例可以应用于的类型的电子设备或系统100的一个实施例的功能框图。系统100包括一个或多个处理核或电路102。处理核102可以包括例如一个或多个处理器、状态机、微处理器、可编程逻辑电路、分立电路装置、逻辑门、寄存器等、及其各种组合。处理核可以控制系统100的整体操作、系统100执行应用程序等。系统100包括一个或多个存储器(诸如一个或多个易失性存储器和/或非易失性存储器),其可以存储例如与系统100的控制有关的全部或部分指令和数据、由系统100执行的应用和操作。如所图示的,系统100包括一个或多个高速缓冲存储器104、一个或多个主存储器106、以及一个或多个辅助存储器108,每个都包括存储器管理电路装置或mmu110。存储器104、106、108中的一个或多个存储器包括存储器阵列(例如,参见图3的存储器阵列302),该存储器阵列在操作中可以由系统100执行的一个或多个进程共享。存储器管理电路装置110在操作中采用一个或多个存储器管理例程以将共享存储器阵列(例如,参见图3的存储器阵列302)的区域(例如,参见图3的区域310、图4的区域410)分配给由系统100执行的各种进程,例如,参考图2至图6所更详细地讨论的。系统100可以包括一个或多个传感器120(例如,加速度计、压力传感器、温度传感器等)、一个或多个接口130(例如,无线通信接口、有线通信接口等)、一个或多个bist电路140、以及其他电路150(其可以包括天线、电源等)和主总线系统160。主总线系统160可以包括一个或多个数据、地址、电源和/或控制总线,其被耦合到系统100的各个部件。系统100还可以包括附加总线系统,诸如通信地耦合高速缓存存储器104和处理核102的总线系统162、通信地耦合高速缓存存储器104和主存储器106的总线系统164、通信地耦合主存储器106和处理核102的总线系统166、以及通信地耦合主存储器106和辅助存储器108的总线系统168。一个或多个主存储器106通常是系统100的工作存储器(例如,处理核102在其上工作的一个或多个存储器),并且通常可以是尺寸有限的易失性存储器(例如,dram),其存储与系统100所执行的进程有关的代码和数据。为了方便起见,本文中对存储在存储器中的数据的引用还可以是指存储在存储器中的代码。在一个实施例中,诸如sram、reram(例如,pcm、mram)、fram等之类的非易失性存储器可以用作一个或多个主存储器或位于一个或多个主存储器中。辅助存储器108通常可以是非易失性存储器,其存储指令和数据,这些指令和数据当被系统100需要时,可以被取回并且存储在主存储器106中。与辅助存储器108比较,高速缓冲存储器104可以是相对较快的存储器,并且通常具有有限尺寸,该尺寸可以大于主存储器106的尺寸。高速缓存存储器104临时存储代码和数据以供系统100以后使用。代替从辅助存储器108取回所需代码或数据以存储在主存储器106中,系统100可以首先检查高速缓存存储器104以查看数据或代码是否已经存储在高速缓存存储器104中。通过减少取回供系统100使用的数据和代码所需的时间和其他资源,高速缓存存储器104可以显着提高系统(诸如系统100)的性能。当(例如,从辅助存储器108)取回代码和数据以供系统100使用时,或者当数据或代码被写入(例如,写入到主存储器106或辅助存储器108)时,数据或代码的副本可以存储在高速缓存存储器104中以供系统100以后使用。可以采用各种高速缓存管理例程来控制存储在一个或多个高速缓存存储器104中的数据。图2是将被描述的实施例可以应用于的类型的电子设备或系统200的另一实施例的功能框图。系统200可以例如用于实现ann以对传感器数据进行分类。应当指出,图1的实施例可以用来实现图2的实施例,并且可以包括片上系统。系统200包括全局存储器202,其对于ann203的进程或集群以及对于主机系统204的进程或集群,可以用作例如主存储器(参见图1的主存储器106)。全局存储器202包括存储器管理电路装置206和一个或多个共享存储器阵列208。存储器管理电路装置206在操作中采用一个或多个存储器管理例程,以基于请求类型和区域可靠性类型信息将共享存储器阵列208的区域分配给由系统200所执行的各种进程,例如,如参考图3至图6所更详细地讨论的。如所图示的,ann203包括一个或多个数据搬运器210、一个或多个存储器桥220、一个或多个传感器230和对应传感器接口232、一个或多个卷积加速器引擎240、以及一个或多个完全连接的引擎250,它们可以以其他常规方式实现和操作以产生分类输出260。通过使用分层存储器系统和本地数据的高效重用,可以促进高效的低功耗操作。加速cdnn卷积层可能占总操作的90%以上。对于带宽和区域两者的计算和存储器资源的高效平衡可以促进在不达到关联上限的情况下实现更好的吞吐量。可以基于单向链路来使用设计时间可配置加速器框架(caf)(参见图2),该单向链路经由作为i/o接口(例如,相机)的可配置数据搬运器源/宿、存储器分层结构和各种类型的加速器(其包括卷积加速器(ca))传送数据流。数据搬运器210在操作中在io(例如,传感器接口232)、存储器分层结构(例如,全局存储器202、存储器桥220)、卷积加速器240和完全连接的引擎250之间搬运数据流。在一个实施例中,全特性背压机构处理数据流控制和流多播,从而促进在多个块实例处重用数据流。链路列表可以控制ann中整个卷积层的完全自主处理。可以对多个加速器进行分组或链路,以并行处理特征映射数据的变化尺寸和多个内核。在一个实施例中,卷积加速器引擎240可以包括集群乘积累加(mac)单元或电路的阵列,其在操作中实现ann中的卷积层处理。卷积加速器引擎可以包括行缓冲器,其与单个存储器访问并行获取多个特征映射数据字。可以使用基于寄存器的内核缓冲器,其提供多个读取端口,而多个多位定点mac单元或电路在每个时钟周期执行多个mac操作。可以采用加法器树来对每个内核列的mac结果求和。mac操作的重叠的基于列的计算促进多个mac的特征映射数据的最佳重用,并且降低了与冗余存储器访问相关联的功耗。在一些实施例中,系统100或系统200可以包括比所图示的部件更多的部件,可以包括比所图示的部件更少的部件,可以将所图示的部件拆分成单独部件,可以组合所图示的部件等,以及它们的各种组合。例如,除内部辅助存储器之外或代替内部辅助存储器,图1的辅助存储器108可以包括通过接口耦合到系统100的外部存储器。在一些实施例中,主存储器106和辅助存储器108可以组合成单个存储器。在一些实施例中,可以省略高速缓冲存储器104。在另一示例中,除单独mmu110之外或代替单独mmu110,一个或多个主存储器106可以共享公共存储器管理电路装置。常规地,基于统计模型和累加的存储器密度来测试系统存储器分层结构,以确保以某些最小电压的可靠操作。如果集成电路芯片的存储器阵列的预测错误率超过阈值错误率,则丢弃该芯片。当存储器以较低的最小电压操作时,存储器的统计错误率往往更高。发明人已经意识到共享存储器阵列的不同进程或集群可以容忍不同的数据错误率,并且可以利用该容错来促进降低总体系统存储器要求,增加芯片产出,以及降低最小操作电压。例如,在ann系统中,出于实践目的,主机进程或集群可能需要采用错误率低于某些ann进程或集群所需的错误率的存储器。因此,如果在将存储器阵列的存储器分配给不同的进程期间考虑到存储器阵列的区域的预测故障率,则可以接受芯片的更高的总体错误率。较高的总体预测故障率促进减少不合格芯片的数目,降低所采用的冗余存储器的量,并且使用较低的最小操作电压来操作芯片。在嵌入式ann系统的上下文中,可能需要ann系统的片上存储器的体块(bulk)来存储相对能容错的内核数据、中间部分和、以及特征数据,同时可能需要较小部分来存储不太能容错的配置/层序列数据。同样,主机系统进程的容错能力可能较小。因此,基于存储器请求的类型(例如,正在分配存储器的目的)以及存储器的区域的错误或可靠性特点来分配诸如共享存储器之类的存储器可以促进显着提高芯片制造工艺的产出。另外,因为取而代之的是,常规地可能已经被指定为不可用并且由冗余存储器代替的行和列可以被指定为分配给某些类型的进程,所以可以减少冗余所需的存储器的量,从而减少了对冗余存储器的需求。还可以降低最小操作电压,从而促进减少例如移动设备中的功率使用。图3中示出了存储器300的示例结构,其在操作中可以基于分配请求类型和指示存储器阵列的相应区域的预测或统计数据错误率的信息来分配存储器区域。可以使用存储器300,例如,以实现以下项中的一者或多者:图1的高速缓冲存储器104、主存储器106和辅助存储器108,图2的全局存储器202等。存储器300包括一个或多个存储器阵列302。如所图示的,存储器阵列302被组织为存储器单元308的多个行304和列306。存储器阵列302还被组织为多个区域310。存储器阵列302可以以物理方式、逻辑方式或其各种组合组织为区域310。区域310可以具有均一尺寸(例如,具有相同数目的行304和列306)或具有变化尺寸。如所图示的,图3的区域310具有相同数目的行304,但是具有不同数目的列306。存储器阵列302还包括多个冗余列312,其可以用于替换存储器阵列302中的故障列306。图4图示了与图3的存储器阵列302相似的存储器阵列402的一个实施例。图4的区域410具有相同数目的存储器单元408的列406和不同数目的行404。在一个实施例中,每个区域410包括存储器阵列402的单行。图4的存储器阵列402还具有多个冗余行412,其可以用于替换存储器阵列402的故障行404。代替图3的存储器阵列302或除此之外,存储器阵列402例如用于图3的存储器300的实施例。各种类型的存储器可以用作存储器阵列302或存储器阵列402。例如,可以采用动态随机存取存储器(dram)、静态随机存取存储器(sram)、电阻式随机存取存储器(reram)(例如,相变存储器(pcm)、磁性随机存取存储器(mram)等)、fram等及其各种组合。可以采用多级存储器单元(例如,多级reram单元)。图3的存储器300还包括存储器管理电路装置320,该存储器管理电路装置320包括存储器控制参数存储装置322。存储器控制参数存储装置包括一个或多个存储器单元308,其如所图示的包括熔丝库324。存储器控制参数存储装置322在操作中存储与存储器阵列302的区域310相关联的存储器控制参数。备选地或附加地,存储器阵列302中的切口可以用于存储存储器控制参数,或可以采用单独存储器。存储器控制参数可以包括例如与存储器的区域相关联的标签。所存储的存储器控制参数包括区域可靠性类型参数,诸如指示可以向其分配存储器阵列302、402的区域310、410的进程的类型的参数。可以例如基于存储器阵列302的相应区域310的预期故障率、与以不同电压电平的操作相关联的故障率、与不同模式(例如,多级模式或二进制模式)的操作相关联的故障率等来确定区域可靠性类型参数的值。例如,可以采用基于存储器阵列的测试的预测故障率来确定区域可靠性类型参数的值。所存储的存储器控制参数可以包括其他参数,诸如区域或其一部分当前是分配给特定进程还是可用于分配、历史分配信息等的指示。所存储的可靠性类型参数可以由存储器管理电路装置320用来将存储器阵列302、402的可用存储器区域310、410分配给不同的进程或处理器。例如,与指示低于阈值故障率的故障率的可靠性类型参数值相关联的存储器区域310、410可以由存储器管理电路装置320确定为可用于到所有进程和处理器的分配。相反,与指示高于阈值故障率的故障率的可靠性类型参数值相关联的存储器区域310、410可以由存储器管理电路装置320确定为可用于仅到某些进程或处理器的分配。例如,与指示高于阈值故障率的故障率的参数相关联的存储器区域310、410的分配可以限于某些进程,诸如ann内核进程、中间部分和进程、以及特征数据进程,同时可能会防止向诸如ann配置/层序列数据存储和主机系统进程之类的较少容错进程分配区域310。可靠性类型参数可以被存储为存储器映射。在一些实施例中,可靠性类型参数值可以是与存储器阵列302、402的区域310、410相关联的二进制值,其中这些值指示该区域是否可用于分配而无不受约束,或者该区域的分配是否应被约束到某些进程。在一些实施例中,可靠性类型参数值可以是指示与存储器300的区域310相关联的多个可靠性水平中的一个可靠性水平的值。例如,第一值可以指示区域310可以被分配给任何进程,第二值可以指示应当约束区域310向主机进程的分配,第三值可以指示应当约束区域310向主机进程的分配以及ann配置/层序列数据存储,而第四值可以指示应当约束区域310向任何进程的分配。在一个实施例中,区域可靠性类型参数的值可以存储在熔丝库324中。下文的表1和表2指示相对于示例存储器阵列的四个区域的熔丝状态与可靠性类型值之间的示例对应关系。通常,例如,如果存储器阵列的每一行视为区域,则存储器阵列可以实质上具有多于四个的区域。表1与熔丝相关联的存储器区域存储器阵列的区域熔丝状态可靠性类型1(例如,第0行至第4行)未熔断不受约束2(例如,第5行至第9行)熔断约束3(例如,第10行至第14行)熔断约束4(例如,第15行至第19行)未熔断不受约束在表1中,存储器阵列的每个区域都与熔丝相关联。可以看出,区域1和4的分配不受约束(例如,可以响应于任何分配请求类型而分配区域1和4),而区域2和3的分配受约束(例如,响应于ann内核数据存储进程请求)。取而代之的是,常规地,区域2和3或其部分(例如,行)可能已被视为无法使用,并且由于芯片的故障率太高而拒绝芯片。在一些实施例中,与未熔断的熔丝相关联的存储器阵列的区域的分配可以被约束为需要低数据错误率的进程类型(例如,主机进程),并且与熔断的熔丝相关联的存储器阵列的区域的分配可以被约束为更能容忍数据错误(例如,ann内核数据存储进程)的进程类型。表2与两个熔丝相关联的存储器区域在表2中,存储器阵列的每个区域都与两个熔丝相关联。可以看出,区域1和4具有水平0约束,并且可以响应于任何分配请求类型而进行分配。区域2具有水平1约束,以防止响应于与主机进程相关联的请求类型的分配。区域3具有水平2约束,以防止响应于与主机进程相关联或与ann配置/层序列数据存储进程相关联的请求类型的分配。在一个实施例中,不会采用状态为未熔断的熔丝1和状态为熔断的熔丝2。在一些实施例中,与某些熔丝状态相关联的存储器阵列的区域的分配可以被约束为与需要低数据错误率的进程(例如,主机进程)相关联的请求类型,并且与其他熔丝状态相关联的存储器阵列的区域的分配可以被约束到与更能容忍数据错误的进程(例如,ann内核数据存储进程)相关联的请求类型。图5图示了例如在集成电路的制造进程或集成电路的启动进程期间生成与存储器阵列相关联的区域可靠性类型和故障信息的方法500的实施例。为了方便起见,参考图1至图4对图5的方法500进行描述。方法500从502开始。方法500可以例如作为芯片制造进程期间使用的测试例程的一部分、芯片启动进程的一部分等开始。方法500从502进行到504。在504处,方法500测试存储器阵列,诸如图3的存储器阵列302或图4的存储器阵列402。这可以例如使用测试探针(未示出)、bist电路装置(参见图1的bist电路装置140)、测试例程及其各种组合来完成。数据模式可以加载到存储器阵列中,并且从存储器阵列中读取以生成测试结果。测试可以包括:在各种操作模式(例如,二进制模式或多级模式等)下以各种最小操作电压电平进行测试。方法500从504进行到506。在506处,方法500分析504处的测试的结果。例如,这可以使用bist电路装置(参见图1的bist电路装置140)、对从存储器阵列读取的数据与期望值的比较的统计分析等来完成。例如,可以基于在504处对测试的结果的统计分析来确定存储器阵列的行、列或区域的统计故障率。该方法从506进行到508。在508处,方法500标识存储器阵列的区域。区域可以是例如默认区域,例如,每行可以被标识为单独区域,每五行可以被标识为单独区域,每列可以被标识为单独区域等。基于测试结果来标识区域。例如,阈值故障率低于第一阈值的每十行按次序可以分组在一起,并且被标识为区域;阈值故障率高于第一阈值并且低于第二阈值故障率的每十行按次序可以分组在一起并且被标识为区域;阈值故障率高于第二阈值的每一行可以被标识为单独区域;等。方法500从508进行到510。在510处,方法500确定与所标识的区域相关联的区域可靠性类型信息。例如,方法500可以基于与区域相关联的统计故障率以二进制方式将每个区域分类为具有不受约束的可靠性类型或受到约束的可靠性类型。例如,参见上文关于表1对二进制区域可靠性类型值进行的讨论。在另一示例中,方法500可以基于与相应区域、处于各种操作模式的相应区域等相关联的统计故障率来将每个区域分类到多个可靠性水平中的一个可靠性水平。例如,参见参考表2对区域可靠性水平的讨论。区域的统计预测故障率可以与一个或多个阈值进行比较,以确定该区域的可靠性类型。该方法从510进行到512。在512处,方法500存储指示区域的可靠性类型的信息。例如,指示与存储器阵列的区域相关联的可靠性类型信息的存储器控制参数值可以被存储在图3的存储器管理电路装置320的存储器控制参数存储装置322中(例如,被存储在熔丝库324中;或者被存储作为与存储器阵列的区域相关联的标签等)。指示区域的可靠性类型的信息可以被存储作为存储器映射。所存储的控制参数值可以例如与分配请求类型信息一起用于将存储器的区域分配给系统进程,诸如图2的系统200的主机系统204进程和ann203进程等。参见例如图6及其描述。方法500从512进行到514。在514处,方法500标识存储器阵列中的故障单元。实际上,这可以例如通过基于行(列)的统计故障率与阈值故障率的比较来标识故障行(或列)来完成。与传统系统相比较,因为通常会导致将行替换为冗余行的故障率可以用来将可靠性类型与行相关联,所以阈值故障率可以更高(导致故障行更少)。方法500从514进行到516。在516处,方法500使用冗余存储器修复存储器阵列。例如,存储器阵列402的故障行404可以被标识为不可用,并且冗余行412可以被标识为可用于分配以替换故障行404。方法500从516进行到518。在518处,方法500存储与存储器阵列相关联的修复数据。例如,标识图4的存储器阵列402的故障行和冗余行的信息可以被存储作为存储器映射,诸如存储在图3的存储器管理电路装置320的存储器控制参数存储装置322中。方法500从518进行到520。在520处,方法500确定方法500是完成还是应当继续。例如,当已经在516处修复了存储器阵列时,方法500可以确定方法500未完成以便确定与用于替换存储器阵列中的故障单元的冗余单元(例如,冗余行)相关联的可靠性信息和故障信息。当在520处确定方法500完成时,方法500从520进行到522,方法500是否可以终止,可以执行其他进程(诸如错误进程)等。当在520处未确定方法500完成时,则方法500从520进行到504。生成与存储器阵列相关联的可靠性类型信息的方法的实施例可以包含图5中未示出的附加动作,可以不包含图5中所示的所有动作,可以以各种次序执行图5所示的动作,并且可以在各个方面上进行修改。例如,当采用默认区域时,方法500可以省略动作508;方法500可以组合动作510和512;可以并行或迭代地以各种次序执行动作510和514;可以组合动作512和518等;及其各种组合。图6图示了将共享存储器的存储器分配给共享存储器的多个进程中的进程的方法600的实施例。为了方便起见,参考图1至图5对图6的方法600进行描述。为了简化讨论,参考诸如图2的存储器阵列208、图3的存储器阵列302、图4的存储器阵列402等之类的单个存储器阵列对图6的实施例进行描述。在一些实施例中,方法600可以用于分配共享存储器的多个存储器阵列、多个共享存储器等中的存储器。方法600从602处开始。方法600可以例如作为在处理系统(诸如图1的系统100、图2的系统200、图2的主机系统204)上、在存储器管理电路装置(诸如图1的存储器管理电路装置110、图2的206、图3的320等)上执行的存储器管理例程的一部分而开始。方法600可以用于为主机进程、应用进程、主机和应用进程的数据缓冲器等分配存储器,并且当进程初始化时分配存储器且在运行时间期间动态分配存储器。方法600从602进行到604。在604处,方法600确定是否已经接收到将共享存储器阵列的存储器分配给进程的请求。例如,主机系统进程或应用进程(诸如ann进程)可以请求分配共享存储器阵列中的存储器。当尚未确定接收到分配共享存储器阵列的存储器的请求时,方法600返回到604以等待分配共享存储器阵列的存储器的请求。响应于接收到分配共享存储器阵列的存储器的请求,方法600从604进行到606。在606处,方法600将一种或多种请求类型与所接收的存储器分配请求相关联。这可以例如通过解析所接收的请求以确定请求类型、通过确定请求的来源等来完成。例如,该请求可以包括进程标识符、进程类型、指示请求类型与所接收的请求相关联的其他信息、请求类型字段等。在另一示例中,从多个处理器中的第一处理器接收的请求可以与第一请求类型相关联,并且从多个处理器中的另一处理器接收的请求可以与第二请求类型相关联。在一个实施例中,从主机进程接收的请求可以与第一请求类型相关联。如果ann进程是控制ann配置/层序列数据存储进程,则从ann进程接收的请求可以与第二请求类型相关联,并且如果ann进程正在请求缓冲器以存储内核数据、中间部分和、或特征数据,则从ann进程接收的请求可以与第三请求类型相关联。可以采用默认存储器分配请求类型。方法600从606进行到608。在608处,方法600基于与所接收的存储器分配请求相关联的所确定的请求类型来将一个或多个区域可靠性类型与所接收的存储器分配请求相关联。例如,与第一请求类型相关联的存储器分配请求可以与第一区域可靠性类型相关联,并且与第二请求类型相关联的存储器分配请求可以与第一区域可靠性类型和第二区域可靠性类型相关联。可以采用查询表将所接收的分配请求与一个或多个区域可靠性类型相关联。方法600从608进行到610。在610处,方法600基于与存储器分配请求相关联的区域可靠性类型和指示该存储器阵列的区域的区域可靠性类型的所存储的信息来响应于存储器分配请求而分配存储器阵列中的存储器。例如,方法600可以响应于与第一区域可靠性类型相关联的存储器请求而分配具有第一区域可靠性类型的一个或多个区域的全部或部分,并且可以响应于与第二区域可靠性类型相关联的存储器请求而分配具有第一区域可靠性类型或第二区域可靠性类型的一个或多个区域的全部或部分。指示存储器阵列的区域的区域可靠性类型的所存储的信息可以用来选择存储器阵列的区域以响应于存储器分配请求而进行分配。例如,参考图2至图4和表1(带有例如存储在熔丝库324中的熔丝的状态),来自主机系统204的请求可以在606处与指示分配请求与不太能容忍数据错误的进程有关的请求类型相关联。在608处,请求与不受约束的可靠性类型相关联。在610处,基于熔丝324的状态,方法600可以响应于来自主机系统204的分配请求而分配区域1和区域4的全部或部分(例如,参考图4,区域410的一个或多个行);区域2和3不会响应来自主机系统的请求而进行分配。在606处,从ann进程203接收的、用于缓冲器存储内核数据、中间部分和、或特征数据的请求可以取而代之地与指示分配请求与更能容忍数据错误的进程(例如,对翻转位不太敏感的进程)有关的请求类型相关联。在608处,该请求将与受约束的可靠性类型相关联。在610处,基于熔丝324的状态,方法600可以响应于来自ann进程的分配请求而分配区域1、区域2、区域3和区域4中的一个或多个区域的全部或部分。在另一示例中,参考图2至图4和表2(带有例如存储在熔丝库324中的熔丝的状态),来自主机系统204的请求可以在606处与指示分配请求与不太能容忍数据错误的进程有关的请求类型相关联。在608处,该请求可能与可靠性类型约束水平0相关联。在610处,基于熔丝324的状态,方法600可以响应于来自主机系统204的分配请求而分配区域1和区域4中的一个或多个区域的行;来自区域2和3的行不会响应于来自主机系统的请求而进行分配。在606处,从ann进程203接收的用于存储ann配置/层序列数据的请求可以与指示分配请求与中等能容忍数据错误的进程有关的请求类型相关联。在608处,该请求与可靠性类型约束水平1相关联。在610处,响应于来自ann进程的用于存储ann配置/层序列数据的分配请求,基于熔丝324的状态,方法600可以分配区域1、区域2和区域4中的一个或多个区域的行,而没有区域3。在606处,从ann进程203接收的用于缓冲器存储内核数据、中间部分和、或特征数据的请求可以与指示分配请求与更能容忍数据错误的进程有关的请求类型相关联。在608处,该请求与可靠性类型约束水平2相关联。在610处,响应于来自ann进程的用于缓冲器存储内核数据、中间部分和、或特征数据的分配请求,基于熔丝324的状态,方法600可以分配区域1、区域2、区域3和区域4中的一个或多个区域的全部或部分。当然,方法600可以基于除与存储器分配请求相关联的区域可靠性类型值之外的其他因素(诸如例如,存储在图3的存储器控制参数存储装置322中的其他存储器控制参数、被设计为促进存储器的均匀磨损的分配选择例程、高速缓存管理控制算法、对分配给某些类型的任务的存储器的量的限制、存储器阵列中可用的未分配存储器的总量、存储器区域的操作模式(例如,多级、二进制)等及其各种组合)响应于分配请求而分配存储器阵列的区域。可以采用其他存储器管理例程(例如,错误处理例程、用于在进程不再需要时释放被分配的存储器的例程等)。方法600从610进行到612,其中方法600确定存储器阵列中的存储器的分配是完成还是应当继续。当在612处确定方法600完成时,方法600从612进行到614,方法600是否可以终止,可以执行其他进程(诸如错误处理)等。当在612处确定方法600尚未完成后,方法600从612进行到604。分配共享存储器的存储器的方法的实施例可以包含图6中未示出的附加动作,不会包含图6中所示的所有动作,可以以各种次序执行图6所示的动作,并且可以在各个方面中进行修改。例如,方法600可以组合动作606和608。例如,查找表可以用于将接收的分配请求与一个或多个区域可靠性类型相关联。在另一示例中,可以例如在610处基于与请求相关联的分配请求类型来确定分配区域的操作模式。一些实施例可以采取计算机程序产品的形式或包括计算机程序产品。例如,根据一个实施例,提供了一种计算机可读介质,其包括计算机程序,该计算机程序适于执行上述方法或功能中的一个或多个方法或功能。介质可以是物理存储介质(诸如例如,只读存储器(rom)芯片)、或磁盘(诸如例如,数字多功能盘(dvd-rom)、压缩盘(cd-rom)、硬盘、存储器、网络、或待由适当驱动器或经由适当连接读取(其包括被编码在存储在一个或多个这种计算机可读介质上的一个或多个条形码或其他相关代码中并且可由适当阅读器设备读取)的便携式介质制品)。更进一步地,在一些实施例中,可以以其他方式(诸如至少部分地以固件和/或硬件)来实现或提供方法和/或功能中的一些或全部,这些方式包括但不限于一个或多个专用集成电路(asic)、数字信号处理器、分立电路装置、逻辑门、标准集成电路、控制器(例如,通过执行适当指令并且包括微控制器和/或嵌入式控制器)、现场可编程门阵列(fpga)、复杂可编程逻辑设备(cpld)等、以及采用rfid技术的设备、及其各种组合。可以组合上文所描述的各种实施例以提供其他实施例。如果需要采用各个实施例和出版物的概念来提供其他实施例,则可以修改实施例的各个方面。可以根据以上具体实施方式对实施例进行这些和其他改变。一般而言,在以下权利要求书中,所使用的术语不应解释为将权利要求限制为本说明书和权利要求书中所公开的特定实施例,而应当解释为包括所有可能的实施例以及权利要求被赋予的等同方案的全部范围。因而,权利要求不受本公开内容的限制。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1