CN102810082B - 带有动态端口的优先级分配能力的存储器控制器 - Google Patents
带有动态端口的优先级分配能力的存储器控制器 Download PDFInfo
- Publication number
- CN102810082B CN102810082B CN201210174895.1A CN201210174895A CN102810082B CN 102810082 B CN102810082 B CN 102810082B CN 201210174895 A CN201210174895 A CN 201210174895A CN 102810082 B CN102810082 B CN 102810082B
- Authority
- CN
- China
- Prior art keywords
- priority value
- memory
- circuit
- priority
- memory access
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
- G06F13/1626—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/18—Handling requests for interconnection or transfer for access to memory bus based on priority control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Logic Circuits (AREA)
- Multi Processors (AREA)
- Bus Control (AREA)
Abstract
本发明涉及一种具有在主模块和系统存储器之间作为接口的存储器控制器的可编程集成电路。该存储器控制器可以经由具有关联优先级值的端口从主模块接收存储器访问请求,并且通过配置系统存储器来响应存储器访问请求从而履行存储器访问请求。为了在存储器控制器接收并履行存储器访问请求的同时动态修改关联的优先级值,可以提供优先级值更新模块,其为存储器控制器端口动态更新优先级值。该优先级值更新模块可以提供更新的优先级值给更新寄存器,基于更新信号和系统时钟更新更新寄存器。该优先级值可以由移位寄存器、存储器映射寄存器提供,或连同每个存储器访问请求由主模块提供。
Description
本申请要求2011年6月1日提交的美国专利申请No.13/151,101的优先权。
技术领域
背景技术
可编程集成电路是能够由用户配置为实现定制的逻辑功能的集成电路类型。在典型的情形中,逻辑设计员使用计算机辅助设计(CAD)工具来设计定制的逻辑电路。当设计进程完成时,CAD工具生成配置数据。加载配置数据到可编程集成电路以配置器件,从而执行所期望的逻辑功能。
在典型系统中,可编程集成电路可以用于和系统存储器通信。这种类型的可编程集成电路常常包括作为可编程集成电路和系统存储器之间接口的存储器控制器。可编程集成电路还包括被配置为通过发送存储器访问请求到存储器控制器来访问系统存储器的模块(例如,存储器控制器包括多个端口,每个端口从可编程集成电路内的相应的模块接收存储器访问请求)
存储器控制器的每个端口被分配相应的优先级值。存储器控制器使用端口优先级值以确定执行从不同模块接收的存储器访问请求的顺序(即,确定哪个存储器访问请求比其他存储器访问请求优先)。可编程集成电路中的传统存储器控制器端口优先级值被分配有预定的端口优先级值,当存储器控制器正接收并履行存储器访问请求时,不能修改该预定的端口优先级值。
发明内容
集成电路(例如可编程集成电路)可以用于与系统存储器通信。可编程集成电路包括可以被配置为形成多个模块的可配置电路,每个模块可操作来执行需要访问系统存储器的任务。可编程集成电路也可以包括作为不同模块和系统存储器之间的接口的存储器控制器。各种模块可以耦合到存储器控制器,并且有时候本文可以称为“主”处理模块。
存储器控制器可以从主处理模块经由具有关联的优先级值的端口接收存储器访问请求。存储器控制器可以通过配置系统存储器响应存储器访问请求从而履行存储器访问请求(例如,通过执行所期望的读取/写入操作)。可编程集成电路可以被提供有优先级值更新模块(有时候称为端口优先级更新电路),其被配置为在存储器控制器接收并履行存储器访问请求的同时动态修改与每个存储器控制器端口关联的优先级值。响应于使更新信号有效并且检测到系统时钟上升沿(作为例子),优先级值更新模块可以为不同的存储器端口提供新的优先级值。
可以由各种源提供新的优先级值给优先级值更新模块,例如,可以由移位寄存器提供优先级值,可以由存储器映射寄存器提供优先级值,或可以由主处理模块提供优先级值连同存储器访问请求。优先级值更新模块可以接收优先级地址信号和其他控制信号,并可以基于优先级地址的值和控制信号将来自所期望的源的新的优先级值选择性地路由到对应的存储器控制器端口。
从附图和下面的详细描述中,本发明的进一步特征、其本质和各种优点将更加显而易见。
附图说明
图1是根据本发明实施例的、可操作来与系统存储器通信的说明性可编程集成电路的图示。
图2是被配置为接收固定端口优先级值的传统存储器控制器的图示。
图3是根据本发明实施例的、被配置为接收利用移位寄存器提供的优先级值的端口优先级更新电路的图示。
图4是根据本发明实施例的、被配置为接收利用移位寄存器和存储器映射寄存器提供的优先级值的端口优先级更新电路的图示。
图5是根据本发明实施例的、被配置为接收利用移位寄存器、存储器映射寄存器以及相关的处理模块提供的优先级值的端口优先级更新电路的图示。
图6是根据本发明实施例的、被配置为接收利用各种可重配置资源提供的优先级值的端口优先级更新电路的图示。
图7是根据本发明实施例的、包括为每个存储器控制器端口分配期望优先级值的说明性步骤的流程图。
图8是根据本发明实施例的、包括更新存储器控制器端口优先级值的说明性步骤的流程图。
图9是根据本发明实施例的说明性可编程集成电路的图示。
图10是根据本发明实施例的、示出逻辑设计系统如何生成配置数据并加载到可编程器件以配置该器件用于系统中操作的图示。
具体实施方式
本发明的实施例涉及包含存储器控制器的集成电路。集成电路,例如可编程集成电路,可以包括可重配置电路(本文有时候称为软结构(soft fabric))。用户可以配置该可重配置电路以形成处理模块,例如通用处理模块或执行特定任务的处理模块。处理模块可以执行需要对系统存储器访问的任务(例如,存储数据以便以后取回)。
集成电路(例如可编程集成电路)使用可编程存储器元件来存储配置数据。在对可编程集成电路编程期间,配置数据被加载到存储器元件中。在可编程集成电路的操作期间,每个存储器元件提供静态输出信号。由存储器元件提供的该静态输出信号作为控制信号。这些控制信号被施加到集成电路上的可编程逻辑以定制可编程逻辑去执行所期望的逻辑功能。
可编程集成电路可以被提供有作为处理模块和系统存储器之间接口的存储器控制器。用于集成电路的存储器控制器可以由非可重配置逻辑形成(有时候称为“硬”存储器控制器,“硬连线的”存储器控制器,或“非可编程的”存储器控制器)。相比由可重配置逻辑(有时候称为“软”逻辑)形成的存储器控制器,硬存储器控制器可以提供改进的性能。
与存储器控制器通信的每个处理模块有时候可以称为“主”处理模块(或主模块)。该存储器控制器可以具有耦合到相应主处理模块的端口。
当主处理模块需要访问系统存储器时,主处理模块可以发送访问请求到存储器控制器。例如,主处理模块可以发送读访问请求到存储器控制器以从存储器中取回(retrieve)数据。该存储器控制器可以接收该读访问请求并通过提供控制信号到系统存储器来履行该读访问请求(例如,该存储器控制器可以接收该读访问请求并提供控制信号到系统存储器,这些控制信号配置系统存储器以用请求的数据进行响应)。作为另一个例子,该主处理模块可以将写访问请求连同要被加载到系统存储器的相应的写数据发送到存储器控制器。该存储器控制器可以接收写访问请求并通过配置系统存储器以在特定地址重写系统存储器来履行该写访问请求。
由于系统存储器的限制,在给定的时间段内,存储器控制器仅能够履行有限数量的访问请求。例如,系统存储器可以由若干存储器条(bank)形成(例如,4或8个存储器条)。在任何给定时间,每个存储器条可以被配置为仅履行一个存储器访问请求(即,跟在第一存储器访问请求后面的对存储器条的第二存储器访问请求会被延时,直到存储器控制器已经完成履行第一存储器访问请求)。
每个主处理模块可以发送多个存储器访问请求到存储器控制器的相应端口。由于系统存储器的限制,来自主处理模块的存储器访问请求按顺序处理。为了处理大量存储器访问请求,存储器控制器可以被提供有调度电路(有时候称为调度器),其并行地从主处理模块接收存储器访问请求并以所期望的顺序安排存储器访问请求以便串行处理(即,履行来自主模块的存储器访问请求的所期望的顺序)。
可能期望将来自至少一些主处理模块的存储器访问请求区分优先次序。例如,第一主模块可以是通用处理电路(例如,被配置为执行通用处理任务的可配置电路的一部分),其发送读访问请求以从存储器取回程序指令代码数据。第二主模块可以是从通用处理电路接收指令的次级处理电路(例如,第二主模块可以是数字信号处理电路,其响应于从通用处理电路接收指令而解码视频数据)。在这个例子中,可能期望来自第一主模块(即,通用处理电路)的存储器访问请求的优先级高于第二主模块(即,数字信号处理电路)的存储器访问请求,因为第二主模块执行的功能是对第一主模块的补充。仲裁单元(例如调度器)可以用于在履行来自分配有较低优先级值的主模块的存储器访问请求之前,履行来自分配有较高优先级值的主模块的存储器访问请求。
由非可配置逻辑形成的存储器控制器(即,“硬”存储器控制器)具有硬连线到存储器控制器的端口优先级(即,在“硬”存储器控制器正常操作之前可以预先确定端口优先级)。可能期望为可编程集成电路内的“硬”存储器控制器提供动态端口优先级分配能力。例如,第一主模块初始可以被分配低于第二主模块的优先级。由第一主模块执行的任务会改变(例如,第一主模块可以被配置为执行对延迟更敏感的功能并需要比第一主模块初始执行的功能更高的优先级)。在这样的情况下,可能期望增加履行来自第一主模块的存储器访问请求的优先级(例如,通过给第一主模块提供高于第二主模块的优先级)。
图1示出可编程逻辑集成电路10,其包括存储器控制器12以及支持动态更新存储器端口优先级的优先级值更新模块32。优先级值更新模块32可以由“软”结构(例如,可重配置逻辑)形成。存储器控制器12可以作为集成电路10和系统存储器14之间的接口。系统存储器14可以由双倍数据率同步动态随机访问存储器(例如,DDR1,DDR2,以及DDR3 SDRAM)或其他合适类型的存储器形成。存储器控制器12可以经由路径40耦合到系统存储器14。
可编程逻辑集成电路10可以通过给存储器控制器12提供读访问请求和写访问请求来使用存储器控制器12与系统存储器14通信。存储器控制器12可以通过配置系统存储器14来响应存储器访问请求,从而履行存储器访问请求。例如,器件10可以向存储器控制器12提供读访问请求,以从系统存储器14内的期望地址读取数据字。响应于接收读请求,存储器控制器12可以处理该请求,生成相应的控制信号,并且经由路径40输送该控制信号到系统存储器14。由存储器控制器12生成的控制信号(例如,系统时钟、存储器地址以及命令信号)可以配置系统存储器14以用存储在期望地址的数据回复。作为另一个例子,器件10可以向存储器控制器12提供写访问请求,以将数据字写到系统存储器14内的期望地址。响应于接收写请求,存储器控制器12可以生成控制信号并经由路径40输送控制信号(例如,配置系统存储器14以在期望地址存储数据字的信号)到系统存储器14。
可编程逻辑集成电路10可以包含可配置电路,例如可配置电路16。可配置电路16可以被配置为形成多个执行各种任务的处理模块。例如,第一模块18A可以被配置为执行通用任务(例如,模块18A可以被配置为通用处理模块)以及第二模块18B可以被配置为执行其他任务(例如,模块18B可以被配置为执行视频解码任务)。当执行某些任务时,模块18(例如,模块18A和18B)会要求访问系统存储器14。例如,为完成视频解码任务,模块18B会读取并存储系统存储器14中指定地址的数据。
模块18可以耦合到存储器控制器12中相应的端口20。例如,模块18A可以耦合到端口20A,而模块18B可以耦合到端口20B。分别耦合到存储器控制器端口20(例如,存储器控制器端口20A和20B)的模块18A和18B在本文可以被称为主处理模块或简称为“主模块”。具有两个处理模块的图1的例子仅仅是说明性的而无意限制本发明的范围。若需要的话,可以利用可配置电路14形成零个主模块、三个或更多主模块、十个或更多主模块或其他需要访问系统存储器14的处理电路。另外,图1的例子示出从可编程逻辑形成的主模块18,但在其他实施例中,主模块可以由硬逻辑形成,例如可以在ASIC中找到的那些。
会有许多主处理模块要求经由存储器控制器12访问系统存储器14。这些主模块可以生成存储器访问请求并输送存储器访问请求到存储器控制器12。存储器控制器12仅能够履行其接收的存储器访问请求中的有限数量。例如,由于当前正在使用的存储器接口协议规定的限制,存储器控制器12仅能够配置系统存储器14每次履行一个存储器访问请求(例如,即使主模块18A和18B并行发送请求到存储器控制器12,也不能同时履行来自主模块18A和18B的存储器访问请求)。
可能期望将与一个主处理模块相关的存储器访问请求相对于与另一个主处理模块相关的存储器访问请求区分优先次序。例如,由主处理模块18B执行的任务可能比由主处理模块18A执行的任务对时间更敏感。在这样的情况下,即使来自主模块18A的存储器访问请求在来自主模块18B的存储器访问请求之前被提供到存储器控制器12,与主模块18B相关的存储器访问请求也在与主模块18A相关的存储器访问请求之前履行。为了适应与各自被分配有相应优先级的多个主处理模块关联的存储器访问请求,存储器控制器12可以包括调度模块30。
调度模块30可以经由相应的路径从每个主模块接收存储器访问请求(例如,调度器30可以具有耦合到主模块18A的第一端子和耦合到主模块18B的第二端子)。每个存储器访问请求可以包括关于存储器访问请求类型(例如,读访问请求,写访问请求等)的信息、与存储器访问请求关联的数据(例如,要被存储到系统存储器14中的写数据)、地址数据(例如,与系统存储器14中读数据或写数据位置相对应的系统存储器地址)或其他所期望的与存储器访问请求关联的信息。
每个主处理模块可以被分配相应的优先级值,该值代表应当履行来自该主处理模块的存储器访问请求的优先级。例如,主处理模块18A可以被分配一个为“0”的优先级值,而主模块18B可以分配一个为“1”的优先级值。优先级值可以利用二进制编码表示。例如,若器件10被配置为带有四个主处理模块,则至少需要两个比特来唯一地识别每一个主处理模块,而若器件10被配置为带有八个主处理模块,则至少需要三个比特来唯一地识别所有主处理模块。
考虑利用三比特信号编码优先级的情况。优先级可以例如包括从0到7的值(例如,“000”,“001”,“010”,“011”,“100”,“101”,“110”,以及“111”)。优先级值可以反比于履行存储器访问请求的优先级。例如,具有优先级值“1”的第一主处理模块比具有优先级值为5的第二主处理模块具有较高的优先级(例如,来自第一主处理模块的存储器访问请求可以在来自第二主处理模块的存储器访问请求之前履行)。
用于可编程集成电路的传统存储器控制器为存储器控制器的每个端口分配预定的优先级(即,传统存储器控制器包括接收固定优先级值的调度器)。如图2所示,传统存储器控制器100分别经由路径106和108耦合到主模块102A和102B,并具有与主模块102A关联的第一组优先级输入110和与主模块102B关联的第二组优先级输入112。输入110被配置为接收用于主模块102A的优先级值,而输入112被配置为接收用于主模块102B的优先级值。因此,输入110和112有时候被称为优先级值输入端子。为了给主模块102A分配优先级值0,调度器100被提供有电源电压信号Vss(即,地电源电压)、Vss以及Vss到输入110。为了给主模块102B分配优先级值1,在输入112处向调度器100提供电源电压信号Vss、Vss以及Vcc(正电源电压)。以这种方式将输入110和112硬连线到电源轨或预设寄存器现在允许当存储器控制器正被用于履行存储器访问请求时改变优先级值。
为了给器件10提供在不断电存储器控制器12的情况下调整每个主模块18(例如,主模块18A和18B)的优先级值的能力,优先级值更新模块32可以经由如图1所示的路径34和36耦合到存储器控制器12。路径34可以耦合到端口20A以及路径36可以耦合到端口20B。优先级值更新模块32可以经由路径34和36给存储器控制器12提供优先级值用于端口20A和20B。
在一个实施例中,优先级值更新模块32可以包含移位寄存器。如图3所示,可以为每个主处理模块形成移位寄存器和更新寄存器。例如,主模块18A可以具有对应的移位寄存器200A和更新寄存器202A,以及主模块18B可以具有对应的移位寄存器200B和更新寄存器202B。如图3所示的例子中,更新寄存器202A和202B经由路径34和36给调度模块30提供优先级值。调度模块200可以从多个主模块接收存储器访问请求,每个主模块带有对应的移位寄存器和更新寄存器(例如,与主模块向其提供存储器访问请求的端口关联的移位寄存器和更新寄存器)。
为了提供与每个主模块关联的优先级值,移位寄存器200(例如移位寄存器200A和200B)可以经由串行数据路径S_in以串行方式加载。例如,为了给移位寄存器200A加载优先级值“0”(即,二进制值“000”)和给移位寄存器200B加载优先级值“1”(即,二进制值“001”),可以通过数据路径S_in输送输入序列“000001”。在这种情况下,输入序列的头三个比特可以对应于优先级值“0”,而输入序列的后三个比特可以对应于优先级值“1”。
可以通过用系统时钟CLK控制移位寄存器来以同步方式加载移位寄存器200(例如,移位寄存器200A和200B)。在系统时钟每个周期的开始,在输入路径S_in上提供的输入比特可以被移位到移位寄存器200内。通过这种方式,在与优先级值的比特总数目相等数目的时钟周期内,优先级值被分配到所有主模块。
每个移位寄存器可以耦合到对应的更新寄存器(例如,每个移位寄存器的输出可以耦合到对应的更新寄存器的输入)。更新寄存器的输出可以耦合到调度模块30的优先级值输入。为了同步提供包含在每个移位寄存器200内的优先级值到调度模块30,可以利用系统时钟CLK和更新信号UPDATE使能更新寄存器202。例如,更新寄存器可以在使信号CLK和UPDATE都有效(assert)时被使能。系统时钟CLK可以具有等于存储器控制器12工作频率的频率。
提供插在每个移位寄存器200A和调度模块30之间的更新寄存器202A可以允许用户在不禁用或断电调度模块30的情况下以串行方式更新优先级值。例如,为了更新与主模块18A关联的优先级值,新的优先级值可以通过串行路径S_in串行地移位到移位寄存器200A中。当新的优先级值已经移位到移位寄存器200A时,可以在下一个系统时钟(CLK)周期通过使更新信号有效来用新的优先级值更新提供与主模块18A关联的优先级值的更新寄存器202A(即,可以在使更新信号有效后的系统时钟周期,给存储器控制器12提供新的优先级值)。
通过使更新信号与系统时钟CLK(例如,具有等于存储器控制器12的工作频率的系统时钟(CLK))同步,可以防止与更新优先级值关联的误操作(glitch)。例如,存储器控制器12可以由非可编程逻辑形成并且以比可配置电路16的时钟频率大的时钟频率工作。在这样的情况下,可以通过可配置电路16提供更新信号到更新寄存器202,并且可以通过使更新信号与系统时钟CLK同步来防止由于存储器控制器12和可配置电路16之间的工作时钟频率的不同而产生的误操作。
若需要的话,可以由用户以并行方式给优先级值更新模块32提供优先级值。在图4所示的图示中,通过多路复用器214和数据路径210以并行方式给更新寄存器202A提供优先级值。可以从集成电路10的其他部件212(例如,存储器映射寄存器,位于总线接口的器件,或其他所期望的存储部件)提供优先级值。
数据路径210可以耦合到每个多路复用器214(例如,多路复用器214A和多路复用器214B)并在任何给定时间给所有多路复用器214提供单个优先级值(例如,所有数据比特对应单个优先级值)。数据路径210可以是并行数据总线或其他适合于并行提供数据比特的数据路径。为了用部件212提供的优先级值更新给定的更新寄存器(例如,与主模块18A关联的更新寄存器202A),可以提供SEL_MMR信号和优先级地址。优先级地址可以识别感兴趣的更新寄存器,SEL_MMR信号可以识别优先级值由部件212提供给感兴趣的更新寄存器。解码器可以接收优先级地址和SEL_MMR信号并经由路径222给多路复用器214提供合适的控制信号。该控制信号可以引导所期望的多路复用器将部件212提供的优先级值路由到期望的更新寄存器。
例如,为了更新与主模块18A关联的优先级值,部件212(例如,存储器映射寄存器)可以提供新的优先级值并且系统可以提供优先级地址(例如,对应主模块18A和更新寄存器202A的优先级地址“1”)到解码器220。解码器可以接收优先级地址并识别更新寄存器202A对应于接收的优先级地址(例如,通过解码优先级地址的比特)。响应于识别更新寄存器202A,解码器220可以经由路径222A将控制信号发送到多路复用器214A,该控制信号将来自部件212的新的优先级值路由到更新寄存器202A。系统可以提供更新信号到更新寄存器202。在这种情形下,仅更新寄存器202A可以用部件212提供的优先级值来被更新。
通过这种方式,可以在单个时钟周期内更新与主模块关联的单个优先级值。以这种并行方式更新所有主模块18所需的系统时钟周期的数量对应于主模块的数量。例如,优先级地址“1”可以对应于更新寄存器18A,而优先级地址0可以对应于更新寄存器18B。为了更新主模块18A的优先级值,可以给解码器220提供优先级地址1并且可以给更新寄存器提供第一更新信号。在下一次使系统时钟信号有效时(例如,在下一个系统时钟周期的开始),可以用在路径210上提供的第一优先级值(例如,来自存储器映射寄存器212)来更新更新寄存器18A。为了更新主模块18B的优先级值,可以给解码器220提供优先级地址“0”并且可以给更新寄存器提供第二更新信号(例如,在当更新寄存器18A被更新时的系统时钟周期期间)。在下一次使系统时钟信号有效时(例如,在更新寄存器18A被更新时的系统时钟周期之后的系统时钟周期的开始),可以用在路径210上提供的第二优先级值更新更新寄存器18B。在这种情况下,需要两个系统时钟周期来更新主模块18A和主模块18B的优先级值。
多路复用器214的使用允许从各种源提供优先级值。如图4所示,多路复用器214A可以被提供有来自第一移位寄存器(例如,来自图3的布置的移位寄存器200A)的优先级值和来自部件212的优先级值。多路复用器214B可以被提供有来自第二移位寄存器(例如,来自图3的布置的移位寄存器200B)的优先级值和来自部件212的优先级值。为了在不同源之间进行选择,除了优先级地址信号之外,解码器220还可以被提供有控制信号,例如SEL_MMR信号。在图4的例子中,当使SEL_MMR信号有效并且提供了优先级地址时,解码器212可以引导与提供的优先级地址对应的多路复用器选择来自部件212的优先级值。在这样的情况下,解码器可以引导所有其他多路复用器选择来自对应的移位寄存器的优先级值(例如,若使SEL_MMR有效且提供了与更新寄存器202A对应的优先级地址“1”,则多路复用器214A可以被引导为路由从部件212提供的优先级值,以及多路复用器214B可以被引导为路由从移位寄存器提供的优先级值)。
解码器可以引导除了由提供给解码器的优先级地址识别的多路复用器之外的多路复用器(即,每个非识别的多路复用器),以选择任何优先级值源。每当使更新信号有效时,由每个非识别的多路复用器选择的源可以反映提供缺省优先级值的源。通过这种方式,没有由优先级地址识别的更新寄存器可以在更新信号被有效时保持缺省优先级值。例如,可能期望向与主模块18B关联的端口提供存储在关联的移位寄存器200B中的缺省优先级值“2”。为了给主模块18B提供缺省优先级值2,每当不与多路复用器214B对应的优先级地址被提供给解码器220时,解码器220可以引导多路复用器214B选择来自移位寄存器200B的优先级值(例如,若解码器220接收到不与多路复用器214B对应的优先级地址“1”,则解码器220可以配置多路复用器214B选择存储在移位寄存器200B中的缺省优先级值)。虽然图4的实施例显示通过寻址方案为单个主模块更新优先级值,但是并行加载优先级值的其他方法对本领域技术人员来说是显而易见的。这些替换方案可以包括同时加载所有移位寄存器200并且锁存或复用它们到更新寄存器202内,或可以包括加载优先级值到各更新寄存器202内的其他寻址方案。
在另一个实施例中,可能期望为每个存储器访问请求动态更新优先级值。例如,主模块18A和主模块18B可以各自动态确定其相应的优先级值(例如,主模块18A可以基于其存储器访问请求对时间如何敏感来确定其优先级值)。为了动态更新优先级值,每个主模块可以提供与各自存储器访问请求对应的优先级值。图5示出每个主模块18为对应的存储器访问请求给优先级值更新模块32提供优先级值的布置。
如图5所示,每个主模块可以耦合到对应的多路复用器214。例如,主模块18A可以经由路径240A耦合到多路复用器214A,以及主模块18B可以经由路径240B耦合到多路复用器214B。每个多路复用器214可以被提供来自对应的主模块和其他源(例如来自图3的移位寄存器200和图4的部件212)的优先级值。每个主模块18可以经由对应的路径240提供与主模块关联的优先级值到对应的多路复用器214。
作为一个例子,主模块18A可以提供时间敏感的存储器访问请求(例如,读访问请求,以从系统存储器读取程序指令)。主模块18A可以被初始分配相对较低的优先级(例如,优先级值10)。可能期望主模块18A以相对较高的优先级(例如,优先级值1)履行时间敏感的存储器访问请求。在延迟敏感的存储器访问请求经由路径22被提供到调度模块30期间或之前,主模块18A可以经由路径240A输送所期望的优先级值1到多路复用器214A。
解码器220可以被提供有以下信号:识别感兴趣的多路复用器214的优先级地址;识别多路复用器214是否应当被配置为将关联的主模块18提供的优先级值路由通过多路复用器的SEL_PORT信号;以及识别多路复用器是否应当被配置为路由其他源(例如部件212(未显示))提供的优先级值。例如,解码器220可以被提供有对应多路复用器214A的优先级地址“1”以及有效的SEL_PORT信号。响应于接收优先级地址和SEL_PORT信号,解码器220可以配置多路复用器214A传递由主模块18A在路径240A上提供的优先级值给更新寄存器202A。
可以基于调度模块30当前正在从哪一个主模块18接收存储器访问请求来使SEL_PORT信号有效。例如,当主模块18B给调度模块30提供存储器访问请求时,可以使SEL_PORT信号(以及选择合适的多路复用器214的优先级地址)有效。通过基于哪一个主模块18正在提供存储器访问请求来使SEL_PORT信号有效,可以用各自提供的存储器访问请求动态更新与各自主模块关联的优先级值(例如,每当主模块提供存储器访问请求和优先级值时,可以使SEL_PORT信号有效)。
可以选择图3、图4以及图5的优先级值源数量和主模块数量以适应各种情景。如图6所示,多个主模块(例如,主模块18A-18N)可以耦合到调度模块30的端口并且耦合到优先级值更新模块32。每个端口可以具有相应的更新寄存器202和多路复用器214,它们将来自优先级值源240C中的一个的优先级值提供给该端口。例如,端口1可以具有对应的多路复用器214A和更新寄存器202A(以及关联的主模块18A),更新寄存器202A识别用于端口1的优先级值。每个多路复用器214可以耦合到各种优先级值源。每个多路复用器可以耦合到移位寄存器、总线接口、部件、主模块或其他提供优先级值以便更新与该多路复用器关联的端口的优先级值的源。例如,多路复用器214A可以耦合到动态提供优先级值连同每个存储器访问请求的主模块18A、提供缺省优先级值的移位寄存器以及提供用户生成的优先级值的存储器映射寄存器。
解码器220可以配置每个多路复用器选择各种优先级值源中的一个。为了更新给定端口的优先级值,解码器220可以被提供有识别哪个多路复用器应当被配置的优先级地址和识别该多路复用器的哪个源应当被选择以给对应的更新寄存器202提供优先级值的控制信号。为了更新端口1的优先级值,解码器220可以被提供有与多路复用器214A关联的优先级地址和控制信号(例如,SEL_MMR,SEL_PORT,以及其他合适的控制信号),从而配置多路复用器214选择存储器映射寄存器以便提供优先级值给更新寄存器202A(作为例子)。
如虚线250所示的,若期望的话,优先级值源240C可以利用不包含任何插入的多路复用器的通信路径250耦合到更新寄存器202。这种类型的配置可以用于例如仅具有单个优先级值源的集成电路布置中。
某些集成电路10会需要给访问系统存储器14的主模块18提供服务质量(QoS)。为了提供服务质量,需要存储器控制器12动态再分配资源以防止任何一个主模块阻止其他主模块访问系统存储器。例如,第一主模块可以具有比第二主模块更高的优先级。若第一主模块给存储器控制器12提供多个存储器访问请求,则来自第二主模块的存储器访问请求会永远不被履行(即,因为来自第一主模块的请求被赋予了比来自第二主模块的请求更高的优先级)。通过提供更新与每个主模块关联的优先级值的方法,存储器控制器12能够给每个与存储器控制器12耦合的主模块提供服务质量。例如,可以减小阻止其他主模块访问系统存储器的主模块的优先级,从而允许其他主模块访问系统存储器。
为了在存储器控制器12履行存储器访问请求时更新优先级值,优先级值更新模块32可以执行如图7所示的流程图的说明性步骤。
在步骤302,优先级值更新模块32可以接收优先级地址和控制信号(例如,SEL_MMR信号和SEL_PORT信号)并识别与优先级地址关联的多路复用器。例如,优先级值更新模块32可以接收优先级地址“0”并识别优先级地址“0”与多路复用器214B关联。识别的多路复用器可以与对应的端口或对应的主模块关联(例如,多路复用器214B可以与主模块18B或端口2关联)。基于接收的控制信号,优先级值更新模块32可以确定是否执行步骤304、306或308的操作。若SEL_PORT信号被有效,则优先级值更新模块32可以执行步骤304的操作。若SEL_MMR信号被有效,则优先级值更新模块32可以执行步骤306的操作。若SEL_PORT和SEL_MMR信号都不有效,则优先级值更新模块32可以执行步骤306的操作。若SEL_PORT和SEL_MMR信号都被有效,则优先级值更新模块32可以忽略控制信号或执行步骤304、步骤306或步骤308中任意一个的操作。
在步骤304,优先级值更新模块32可以引导识别的多路复用器选择来自与识别的多路复用器关联的主处理模块(例如,给识别的多路复用器提供优先级值的主处理模块)的优先级值。例如,多路复用器214A可以选择由主处理模块18A经由路径240A给多路复用器214A提供的优先级值。通过选择优先级值,多路复用器214A可以输送选择的优先级值到对应的更新寄存器的输入(例如,多路复用器214A可以给更新寄存器202A的输入输送由主处理模块18A提供的优先级值)。
在步骤306,优先级值更新模块32可以引导识别的多路复用器选择来自以下部件的优先级值,例如存储器映射寄存器,耦合到数据总线接口的模块,或其他给所有多路复用器提供单个优先级值的部件(例如,可以经由耦合到存储器映射寄存器的单个数据总线给多路复用器214A-214N中的每个提供优先级值)。识别的多路复用器可以输送选择的优先级值到相应的更新寄存器的输入(例如,多路复用器214A可以输送由存储器映射寄存器提供的优先级值到更新寄存器202A的输入)。
在步骤308,优先级值更新模块32可以引导识别的多路复用器选择来自与识别的多路复用器关联的移位寄存器(或其他合适的位于优先级更新模块32内的寄存器)的优先级值。例如,多路复用器214A可以选择由移位寄存器200A提供的优先级值。识别的多路复用器可以被优先级值更新模块32配置为输送选择的优先级值到对应的更新寄存器的输入(例如,多路复用器214A可以输送由移位寄存器200A提供的优先级值到更新寄存器202A的输入)。
在步骤310,优先级值更新模块32可以引导没有被接收的优先级地址识别的多路复用器(即,剩下的多路复用器)选择来自缺省源的优先级值。该缺省源可以是预定义的或可以是先前在步骤302-308中选择的源。作为例子,移位寄存器202可以被预定义为缺省源(即,多路复用器选择的、没有被接收的优先级地址识别的源)。在这种情况下,剩下的多路复用器中的每个可以被配置为选择对应的移位寄存器(例如,当接收的优先级地址不与多路复用器214B关联时,多路复用器214B可以被配置为选择对应的移位寄存器214B)。作为另一个例子,每个多路复用器可以被配置为选择在步骤302-308中针对该多路复用器最近选择的源。
步骤310可以与步骤304同时(例如,在同一时间)执行。例如,接收与第一多路复用器214A相对应的优先级地址的优先级值更新模块32可以为第一多路复用器和剩下的多路复用器同时选择优先级值源。
若在步骤310的操作期间更新信号被有效,则优先级值更新模块32可以执行步骤312的操作。
在步骤312,优先级值更新模块32可以在下一个系统时钟周期在对应的更新寄存器(例如,更新寄存器202)中存储选择的优先级值中的每个。例如,更新寄存器202A可以存储由多路复用器214A选择的优先级值。更新信号可以与时钟信号结合,使得在下一个时钟周期存储选择的优先级值(例如,若更新信号和时钟信号都被有效,则可以存储选择的优先级值)。接着,该进程可以循环返回步骤302。
可能期望更新与存储器控制器端口关联的优先级值。为了更新存储器控制器特定端口的优先级值,优先级值更新模块32可以执行如图8所示流程图的说明性步骤。
在步骤352,存储器控制器可以接收优先级地址和关联的控制信号。可以由系统或集成电路10的其他模块提供优先级地址和控制信号。
在步骤354,存储器控制器可以识别与接收的优先级地址关联的存储器控制器端口。例如,优先级值更新模块32可以使用接收的优先级地址识别N个不同存储器控制器端口中的一个,每个存储器控制器端口与N个不同优先级地址中的一个相对应。
在步骤356,存储器控制器可以基于控制信号选择优先级值源。可能有各种优先级值源(如图6所示),且控制信号可以识别各种优先级值源中的哪个应当被选择来提供优先级值。
在步骤358,存储器控制器可以将由优先级值源提供的优先级值存储到与存储器控制器端口关联的更新寄存器内。存储在更新寄存器中的优先级值可以用于识别优先级,以该优先级履行提供给与更新寄存器关联的端口的存储器访问请求。
器件10的存储器元件可以被组织为具有许多行和列的阵列。例如,可以在可编程逻辑器件集成电路上以数百或数千行和列形成存储器阵列电路。图9的可编程集成电路10是可以在其上形成存储器阵列电路的说明性集成电路的例子。
如图9所示,可编程集成电路10可以具有输入输出电路412,其用于经由输入输出管脚414驱动信号离开器件10和从其他器件接收信号。互连资源416(例如全局垂直和水平导线和总线,以及局部垂直和水平导线和总线)可以用于路由器件10上的信号。互连资源416包括固定的互连(导线)和可编程互连(即,在相应固定互连之间的可编程连接)。可编程逻辑418可以包括组合逻辑电路和时序逻辑电路。可编程逻辑18可以被配置为执行定制的逻辑功能。
可编程集成电路10包含存储器元件20,存储器元件20可以利用管脚414和输入输出电路412被加载有配置数据(也叫编程数据)。一旦加载,存储器元件各自提供对应的静态控制输出信号,该信号控制可编程逻辑418中关联的逻辑部件的状态。通常,存储器元件输出信号用于控制金属氧化物半导体(MOS)晶体管的栅极。例如,由可编程逻辑形成的端口优先级更新模块可以包括存储器元件,所述存储器元件提供静态控制输出信号以控制晶体管的栅极。在这样的情形下,可以通过将改变静态控制输出信号的值存储到存储器元件中来配置或编程端口优先级更新模块。晶体管中的某些可以是p沟道金属氧化物半导体(PMOS)晶体管。在可编程部件(例如多路复用器)中,这些晶体管中的多数可以是n沟道金属氧化物半导体(NMOS)传输晶体管。当存储器元件输出是高时,由该存储器元件控制的NMOS传输晶体管将被开启,从而将逻辑信号从其输入传递到其输出。当存储器元件输出是低时,传输晶体管被关闭并且不传递逻辑信号。
典型的存储器元件420是由多个被配置为形成交叉耦合的反相器的晶体管形成的。也可以使用其他布置(例如,带有更多分布式类反相器电路的单元)。通过合适的方法,互补金属氧化物半导体(CMOS)集成电路技术用于形成存储器元件420,因此本文作为示例描述了基于CMOS的存储器元件的实现。在可编程集成电路的背景中,存储器元件存储配置数据,因此有时候被称为配置随机访问存储器(CRAM)单元。
用于器件10的说明性系统环境如图10所示。器件10可以安装于系统438中的板436上。一般来说,可编程逻辑器件10可以从编程设备或从其他合适的设备或器件接收配置数据。在图10的例子中,可编程逻辑器件10是从关联的集成电路440接收配置数据的可编程逻辑器件类型。在这种类型的布置中,若期望的话,电路440可以安装在同一板436上作为可编程逻辑器件10。电路440可以是可擦写可编程只读存储器(EPROM)芯片,带有内置存储器的可编程逻辑器件配置数据加载芯片(有时候称为配置器件),或其他合适的器件。当系统438启动时(或在另一个合适的时间),用于配置可编程逻辑器件的配置数据可以从器件440被供应给可编程逻辑器件,如路径442示意性示出的。供应给可编程逻辑器件的配置数据可以被存储在可编程逻辑器件中的配置随机访问存储器元件420中。
系统438可以包括处理电路444、存储装置446(例如,系统存储器14)以及与器件10通信的其他系统部件448。系统438的部件可以位于一个或更多板(例如板436)上或其他合适的安装结构或外壳上,且可以由总线和其他电气路径40互连。
配置器件440可以通过路径(例如路径452)被提供有用于器件10的配置数据。配置器件40可以例如从配置数据加载设备454或在配置器件440中存储该数据的其他合适的设备接收配置数据。器件440可以在其安装到板436上之前或之后加载有数据。
在可编程器件中设计和实现所期望的逻辑电路会是一项繁重的任务(undertaking)。因此,逻辑设计员通常使用基于计算机辅助设计(CAD)工具的逻辑设计系统来辅助其设计电路。逻辑设计系统可以帮助逻辑设计员并测试系统的复杂电路。当设计完成时,逻辑设计系统可以用于生成配置数据,该配置数据用于对合适的可编程逻辑器件进行电编程。
如图10所示,可以通过路径(例如路径458)给设备454提供由逻辑设计系统456产生的配置数据。设备454给器件440提供配置数据,使得器件440能够稍后通过路径442给可编程逻辑器件10提供该配置数据。系统456可以基于一个或更多计算机和一个或更多软件程序。一般说来,软件和数据可以被存储在系统456中的任何计算机可读介质(存储装置)上并在图10中示意性示为存储装置460。
在典型的情形下,逻辑设计员使用逻辑设计系统456生成定制的电路设计。系统456产生对应的提供给配置器件440的配置数据。上电后,使用配置器件440和可编程逻辑器件10上的数据加载电路来加载配置数据到器件10的CRAM单元420中。接着,器件10可以用于系统438的正常操作。
附加实施例1。一种可操作来访问存储器的集成电路,包括:可操作来生成存储器访问请求的可编程主模块电路;可操作来在第一端口和第二端口从所述可编程主模块电路接收所述存储器访问请求的存储器控制器,其中所述存储器控制器可操作来访问所述存储器以履行所述存储器访问请求,并且其中所述存储器控制器可操作来按顺序履行所述存储器访问请求;以及控制电路,其可操作来控制所述存储器控制器履行所述存储器访问请求的顺序。
附加实施例2。在附加实施例1中所述的集成电路,其中所述存储器控制器包括非可编程存储器控制器。
附加实施例3。在附加实施例1中所述的集成电路,其中所述存储器控制器进一步可操作来通过按基于优先级值的顺序访问所述存储器从而履行所述存储器访问请求,所述集成电路进一步包括可操作来存储所述优先级值的更新寄存器。
附加实施例4。在附加实施例3中所述的集成电路,进一步包括给所述更新寄存器提供所述优先级值的移位寄存器电路。
附加实施例5。在附加实施例3中所述的集成电路,进一步包括给所述更新寄存器提供所述优先级值的可寻址寄存器电路。
附加实施例6。在附加实施例3中所述的集成电路,进一步包括给所述更新寄存器提供所述优先级值的优先级值源。
附加实施例7。在附加实施例6中所述的集成电路,其中所述存储器访问请求中的每个与所述优先级值中的一个关联,并且其中所述集成电路进一步包括至少一个优先级值源,所述优先级值源可操作来给所述更新寄存器供应所述优先级值并且进一步可操作来给所述存储器控制器的第一端口和第二端口供应所述存储器访问请求。
附加实施例8。在附加实施例7中所述的集成电路,其中至少一个优先级值源包括至少一个主处理模块,所述主处理模块可操作来给所述更新寄存器动态供应所述优先级值。
附加实施例9。在附加实施例8中所述的集成电路,其中所述至少一个主处理模块在供应所述优先级值的同时,进一步给所述存储器控制器的第一端口和第二端口供应所述存储器访问请求。
附加实施例10。一种集成电路,其包括:处理电路,其可操作来生成存储器访问请求以便访问存储器;非可重配置存储器控制器,其可操作来在多个端口接收所述存储器访问请求,每个端口具有关联的优先级值;以及可编程控制电路,其可操作来动态调整与所述多个端口中的每个关联的优先级值,其中所述存储器控制器进一步可操作来通过按基于所述优先级值的顺序访问所述存储器从而履行所述存储器访问请求。
附加实施例11。在附加实施例10中所述的集成电路,进一步包括更新寄存器,所述更新寄存器可操作来存储所述优先级值并且进一步可操作来给所述存储器控制器提供存储的优先级值。
附加实施例12。在附加实施例11中所述的集成电路,进一步包括:多个优先级值源,每个优先级值源可操作来供应至少一个优先级值,其中所述可编程控制电路包括多路复用器电路,所述多路复用器电路可操作来将所述优先级值从优先级值源路由到所述更新寄存器。
附加实施例13。在附加实施例12中所述的集成电路,其中所述可编程控制电路进一步包括解码器,所述解码器可操作来控制所述多路复用器电路将所述优先级值路由到所述更新寄存器。
附加实施例14。在附加实施例13中所述的集成电路,其中所述解码器包括优先级地址输入,所述优先级地址输入可操作来接收优先级地址,所述优先级地址引导所述解码器发出控制信号到所述多路复用器电路,从而引导所述多路复用器电路将来自所述优先级值源中选择的一个的信号路由到所述更新寄存器中选择的一个。
附加实施例15。在附加实施例14中所述的集成电路,其中所述多路复用器电路包括多个多路复用器,每个多路复用器通过相应的控制线耦合到所述解码器,并且每个多路复用器可操作来将来自所述多个优先级值源的信号选择性地路由到所述更新寄存器中相应的一个。
附加实施例16。在附加实施例10中所述的集成电路,其中所述处理电路包括可操作来产生静态输出信号的至少一个存储器元件和具有可操作来接收所述静态输出信号的栅极的至少一个可编程晶体管。
附加实施例17。在附加实施例9中所述的集成电路,其中所述多个端口包括第一端口和第二端口,其中所述处理电路包括可操作来发送存储器访问请求到所述第一端口的第一主处理电路和可操作来发送存储器访问请求到所述第二端口的第二主处理电路,并且其中所述可编程控制电路进一步可操作来通过动态调整所述优先级值给所述第一主处理电路和所述第二主处理电路提供服务质量。
附加实施例18。在附加实施例10中所述的集成电路,进一步包括:多个优先级值源,每个优先级值源可操作来供应至少一个优先级值,其中所述优先级值源包括从以下群组中选择的至少一个优先级值源:主处理模块,移位寄存器,存储器映射寄存器,以及总线接口。
附加实施例19。一种集成电路,其包括:存储器控制器,其可操作来接收存储器访问请求并且进一步可操作来访问存储器以履行所述存储器访问请求;以及可编程电路,其可操作来给所述存储器控制器提供存储器访问优先级信息,从而引导所述存储器控制器按基于所述存储器访问优先级信息的顺序履行所述存储器访问请求。
附加实施例20。在附加实施例19中所述的集成电路,其中所述存储器访问优先级信息包括多个存储器访问优先级值,并且其中所述可编程电路包括可操作来存储至少一个存储器访问优先级值的更新寄存器电路。
附加实施例21。在附加实施例20中所述的集成电路,进一步包括:多个优先级值源,每个优先级值源可操作来供应存储器访问优先级值,其中所述可编程电路进一步包括多路复用器电路,所述多路复用器电路可操作来将来自所述多个优先级值源中选择的一个的存储器访问优先级值路由到所述更新寄存器电路。
附加实施例22。在附加实施例19中所述的集成电路,进一步包括从以下群组中选择的所述存储器访问优先级信息的至少一个源:主处理模块,移位寄存器,存储器映射寄存器,以及总线接口,其中所述可编程电路包括至少一个可编程晶体管和至少一个存储器元件,所述存储器元件可操作来给所述可编程晶体管供应静态控制信号,并且其中所述可编程电路可操作来从所述存储器访问优先级信息的至少一个源接收所述存储器访问优先级信息,并且进一步可操作来选择将哪个存储器访问优先级信息提供给所述存储器控制器。
上述仅作为本发明原理的示范性说明,本领域技术人员可以在不偏离本发明范围和精神的情况下对其做出各种修改。
Claims (16)
1.一种可操作来访问存储器的集成电路,其包括:
生成存储器访问请求的可编程主模块电路;
在第一端口和第二端口从所述可编程主模块电路接收所述存储器访问请求的存储器控制器,其中所述存储器控制器访问所述存储器以履行所述存储器访问请求,其中所述存储器控制器按顺序履行所述存储器访问请求,并且其中所述存储器控制器通过按基于优先级值的顺序访问所述存储器来履行所述存储器访问请求,所述优先级值对应于所述第一端口和所述第二端口的端口优先级值;
控制电路,其控制所述存储器控制器履行所述存储器访问请求的顺序;以及
更新存储所述端口优先级值的寄存器,其中所述端口优先级值被存储在更新寄存器中的相应寄存器中并且在连续的时钟周期期间被更新。
2.根据权利要求1所述的集成电路,其中所述存储器控制器包括非可编程存储器控制器。
3.根据权利要求2所述的集成电路,进一步包括给所述更新寄存器提供所述优先级值的移位寄存器电路。
4.根据权利要求2所述的集成电路,进一步包括给所述更新寄存器提供所述优先级值的可寻址寄存器电路。
5.根据权利要求2所述的集成电路,进一步包括给所述更新寄存器提供所述优先级值的优先级值源。
6.根据权利要求5所述的集成电路,其中所述存储器访问请求中的每个与所述优先级值中的一个关联,并且其中所述集成电路进一步包括至少一个优先级值源,所述优先级值源给所述更新寄存器供应所述优先级值并且进一步给所述存储器控制器的第一端口和第二端口供应所述存储器访问请求。
7.根据权利要求6所述的集成电路,其中所述至少一个优先级值源包括至少一个主处理模块,所述主处理模块给所述更新寄存器动态供应所述优先级值。
8.根据权利要求7所述的集成电路,其中所述至少一个主处理模块在供应所述优先级值时,进一步给所述存储器控制器的第一端口和第二端口供应所述存储器访问请求。
9.一种集成电路,其包括:
处理电路,其生成存储器访问请求以便访问存储器;
非可重配置存储器控制器,其在多个端口接收所述存储器访问请求,每个端口具有关联的优先级值;
多个优先级值源,每个优先级值源可操作来供应至少一个优先级值;
可编程控制电路,其动态调整与所述多个端口中的每个关联的优先级值,其中所述存储器控制器还通过按基于所述优先级值的顺序访问所述存储器从而履行所述存储器访问请求;以及
更新寄存器,其存储所述优先级值并且进一步可给所述非可重配置存储器控制器提供存储的优先级值,其中所述可编程控制电路包括:
多路复用器电路,所述多路复用器电路耦合在所述更新寄存器和所述多个优先级值源之间;以及
解码器,所述解码器控制所述多路复用器电路以将来自选择的优先级值源的所述优先级值路由到与所述非可重配置存储器控制器的选择的端口关联的所述更新寄存器中的一个,其中所述解码器为所述非可重配置存储器控制器的未选择的端口从缺省优先值级源选择优先级值。
10.根据权利要求9所述的集成电路,其中所述解码器包括优先级地址输入,所述优先级地址输入接收优先级地址,所述优先级地址引导所述解码器发出控制信号到所述多路复用器电路,从而所述引导多路复用器电路将来自所述优先级值源中选择的一个的信号路由到所述更新寄存器中选择的一个。
11.根据权利要求10所述的集成电路,其中所述多路复用器电路包括多个多路复用器,每个多路复用器通过相应的控制线耦合到所述解码器,并且每个多路复用器将来自所述多个优先级值源的信号选择性地路由到所述更新寄存器中相应的一个。
12.根据权利要求9所述的集成电路,其中所述处理电路包括产生静态输出信号的至少一个存储器元件和具有接收所述静态输出信号的栅极的至少一个可编程晶体管。
13.根据权利要求9所述的集成电路,其中所述多个端口包括第一端口和第二端口,其中所述处理电路包括发送存储器访问请求到所述第一端口的第一主处理电路和发送存储器访问请求到所述第二端口的第二主处理电路,并且其中所述可编程控制电路通过动态调整所述优先级值从而给所述第一主处理电路和所述第二主处理电路提供服务质量。
14.根据权利要求9所述的集成电路,其进一步包括:
多个优先级值源,每个优先级值源供应至少一个优先级值,其中所述优先级值源包括从以下群组中选择的至少一个优先级值源:主处理模块,移位寄存器,存储器映射寄存器,以及总线接口。
15.一种集成电路,其包括:
生成存储器访问请求的多个处理模块;
存储器控制器,其接收存储器访问请求并且访问存储器以按基于存储器访问优先级信息的顺序履行所述存储器访问请求,其中所述存储器访问优先级信息包括对应于所述处理模块中的每个的相应的存储器访问优先级值,并且其中至少两个所述相应的存储器访问优先级值可同步地被调整,而不断电所述存储器控制器;
可编程电路,其基于由所述可编程电路中的可编程存储器元件存储的配置数据给所述存储器控制器提供所述存储器访问优先级值,其中所述可编程电路包括存储至少一个所述存储器访问优先级值的更新寄存器电路;以及
多个优先级值源,其将所述存储器访问优先级值供应到所述更新寄存器电路,其中所述可编程电路进一步包括多路复用器电路,所述多路复用器电路将由所述多个优先级值源中选择的一个供应的选择的存储器访问优先级值路由到所述更新寄存器电路。
16.根据权利要求15所述的集成电路,进一步包括从以下群组中选择的存储器访问优先级信息的至少一个源:主处理模块、移位寄存器、存储器映射寄存器以及总线接口,其中所述可编程电路从存储器访问优先级信息源中的至少一个源接收所述存储器访问优先级信息并且进一步选择将哪个存储器访问优先级信息提供给所述存储器控制器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/151,101 US9208109B2 (en) | 2011-06-01 | 2011-06-01 | Memory controllers with dynamic port priority assignment capabilities |
US13/151,101 | 2011-06-01 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102810082A CN102810082A (zh) | 2012-12-05 |
CN102810082B true CN102810082B (zh) | 2017-06-27 |
Family
ID=46545236
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210174895.1A Active CN102810082B (zh) | 2011-06-01 | 2012-05-30 | 带有动态端口的优先级分配能力的存储器控制器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9208109B2 (zh) |
EP (1) | EP2530600A3 (zh) |
JP (1) | JP6113964B2 (zh) |
CN (1) | CN102810082B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9354989B1 (en) * | 2011-10-03 | 2016-05-31 | Netapp, Inc | Region based admission/eviction control in hybrid aggregates |
US9251103B2 (en) * | 2012-08-08 | 2016-02-02 | Vmware, Inc. | Memory-access-resource management |
US9342402B1 (en) * | 2014-01-28 | 2016-05-17 | Altera Corporation | Memory interface with hybrid error detection circuitry for modular designs |
US9928183B2 (en) * | 2014-09-26 | 2018-03-27 | Ampere Computing Llc | Priority framework for a computing device |
KR20170060300A (ko) * | 2015-11-24 | 2017-06-01 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작방법 |
US11003602B2 (en) * | 2017-01-24 | 2021-05-11 | Micron Technology, Inc. | Memory protocol with command priority |
CN107340973B (zh) * | 2017-07-05 | 2021-04-13 | 郑州云海信息技术有限公司 | 一种访问异步逻辑单元的方法及系统 |
US10909046B2 (en) | 2018-06-15 | 2021-02-02 | Micron Technology, Inc. | Memory access determination |
CN110348253B (zh) * | 2018-08-20 | 2020-10-13 | 广州知弘科技有限公司 | 基于大数据的信息安全系统的延时处理电路和方法 |
US10909292B1 (en) * | 2019-02-14 | 2021-02-02 | Xilinx, Inc. | Implementing circuit designs on multi-die programmable devices |
WO2022098356A1 (en) * | 2020-11-05 | 2022-05-12 | Google Llc | Memory-request priority up-leveling |
CN114554126B (zh) * | 2022-01-29 | 2023-08-25 | 山东云海国创云计算装备产业创新中心有限公司 | 一种基板管理控制芯片、视频数据传输方法及服务器 |
CN115118677A (zh) * | 2022-06-24 | 2022-09-27 | 无锡中微亿芯有限公司 | 一种fpga中的片上网络的路由节点调度方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4400771A (en) * | 1975-12-04 | 1983-08-23 | Tokyo Shibaura Electric Co., Ltd. | Multi-processor system with programmable memory-access priority control |
US5729495A (en) * | 1995-09-29 | 1998-03-17 | Altera Corporation | Dynamic nonvolatile memory cell |
CN101395574A (zh) * | 2006-03-10 | 2009-03-25 | 高通股份有限公司 | 存储器屏障总线命令的有效执行 |
Family Cites Families (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4006466A (en) | 1975-03-26 | 1977-02-01 | Honeywell Information Systems, Inc. | Programmable interface apparatus and method |
JPS5839344B2 (ja) * | 1975-12-04 | 1983-08-29 | 株式会社東芝 | マルチプロセツサシステム ノ セイギヨホウシキ |
JPS5839343B2 (ja) * | 1975-12-04 | 1983-08-29 | 株式会社東芝 | マルチプロセツサシステム ノ ユウセンセイギヨホウシキ |
US4488218A (en) * | 1982-01-07 | 1984-12-11 | At&T Bell Laboratories | Dynamic priority queue occupancy scheme for access to a demand-shared bus |
US4814974A (en) | 1982-07-02 | 1989-03-21 | American Telephone And Telegraph Company, At&T Bell Laboratories | Programmable memory-based arbitration system for implementing fixed and flexible priority arrangements |
US4493036A (en) | 1982-12-14 | 1985-01-08 | Honeywell Information Systems Inc. | Priority resolver having dynamically adjustable priority levels |
US5025370A (en) * | 1986-09-02 | 1991-06-18 | Koegel Robert J | Circuit for preventing lock-out of high priority requests to a system controller |
JPS63238630A (ja) * | 1987-03-26 | 1988-10-04 | Toshiba Corp | マイクロプロセツサの割込み制御装置 |
US5440752A (en) | 1991-07-08 | 1995-08-08 | Seiko Epson Corporation | Microprocessor architecture with a switch network for data transfer between cache, memory port, and IOU |
US5420985A (en) * | 1992-07-28 | 1995-05-30 | Texas Instruments Inc. | Bus arbiter system and method utilizing hardware and software which is capable of operation in distributed mode or central mode |
US5832304A (en) | 1995-03-15 | 1998-11-03 | Unisys Corporation | Memory queue with adjustable priority and conflict detection |
US6157210A (en) * | 1997-10-16 | 2000-12-05 | Altera Corporation | Programmable logic device with circuitry for observing programmable logic circuit signals and for preloading programmable logic circuits |
US6700899B1 (en) * | 1998-02-03 | 2004-03-02 | Broadcom Corporation | Bit slice arbiter |
US6381673B1 (en) * | 1998-07-06 | 2002-04-30 | Netlogic Microsystems, Inc. | Method and apparatus for performing a read next highest priority match instruction in a content addressable memory device |
US6253262B1 (en) * | 1998-09-11 | 2001-06-26 | Advanced Micro Devices, Inc. | Arbitrating FIFO implementation which positions input request in a buffer according to its status |
US6563506B1 (en) * | 1998-12-14 | 2003-05-13 | Ati International Srl | Method and apparatus for memory bandwith allocation and control in a video graphics system |
JP3319723B2 (ja) * | 1999-04-02 | 2002-09-03 | 日本電気株式会社 | スイッチ及びそのスケジューラ並びにスイッチスケジューリング方法 |
US6661733B1 (en) * | 2000-06-15 | 2003-12-09 | Altera Corporation | Dual-port SRAM in a programmable logic device |
DE10211054A1 (de) * | 2002-03-13 | 2003-10-09 | Advanced Micro Devices Inc | USB-Hostcontroller |
US6799304B2 (en) | 2002-10-01 | 2004-09-28 | Lsi Logic Corporation | Arbitration within a multiport AMBA slave |
JP4266619B2 (ja) * | 2002-11-25 | 2009-05-20 | 株式会社ルネサステクノロジ | 調停回路 |
JP2005092630A (ja) * | 2003-09-18 | 2005-04-07 | Sony Corp | メモリ制御装置及び制御方法 |
JP4305378B2 (ja) * | 2004-12-13 | 2009-07-29 | ソニー株式会社 | データ処理システム、アクセス制御方法、その装置およびそのプログラム |
US7797467B2 (en) | 2005-11-01 | 2010-09-14 | Lsi Corporation | Systems for implementing SDRAM controllers, and buses adapted to include advanced high performance bus features |
US7430148B2 (en) * | 2005-11-17 | 2008-09-30 | Altera Corporation | Volatile memory elements with boosted output voltages for programmable logic device integrated circuits |
US7330049B2 (en) * | 2006-03-06 | 2008-02-12 | Altera Corporation | Adjustable transistor body bias generation circuitry with latch-up prevention |
US7463057B1 (en) * | 2006-03-29 | 2008-12-09 | Altera Corporation | Integrated circuits with adjustable memory element power supplies |
US7475315B1 (en) * | 2007-01-10 | 2009-01-06 | Altera Corporation | Configurable built in self test circuitry for testing memory arrays |
US7908440B2 (en) | 2007-08-09 | 2011-03-15 | Intel Corporation | Simultaneous personal sensing and data storage |
US7589556B1 (en) * | 2007-10-26 | 2009-09-15 | Altera Corporation | Dynamic control of memory interface timing |
JP5233360B2 (ja) * | 2008-03-27 | 2013-07-10 | 富士通株式会社 | メモリ制御装置,メモリ制御装置の制御方法および情報処理装置 |
US7793025B2 (en) * | 2008-03-28 | 2010-09-07 | Freescale Semiconductor, Inc. | Hardware managed context sensitive interrupt priority level control |
US7872512B2 (en) * | 2008-04-01 | 2011-01-18 | Altera Corporation | Robust time borrowing pulse latches |
US20100162065A1 (en) * | 2008-12-19 | 2010-06-24 | Unity Semiconductor Corporation | Protecting integrity of data in multi-layered memory with data redundancy |
US7920410B1 (en) * | 2009-02-23 | 2011-04-05 | Altera Corporation | Memory elements with increased write margin and soft error upset immunity |
JP2010282405A (ja) * | 2009-06-04 | 2010-12-16 | Renesas Electronics Corp | データ処理システム |
EP2296091A1 (en) * | 2009-09-14 | 2011-03-16 | Nxp B.V. | Servicing low-latency requests ahead of best-effort requests |
US8799914B1 (en) * | 2009-09-21 | 2014-08-05 | Tilera Corporation | Managing shared resource in an operating system by distributing reference to object and setting protection levels |
US8438326B2 (en) * | 2010-06-07 | 2013-05-07 | Xilinx, Inc. | Scalable memory interface system |
-
2011
- 2011-06-01 US US13/151,101 patent/US9208109B2/en active Active
-
2012
- 2012-05-29 JP JP2012121896A patent/JP6113964B2/ja active Active
- 2012-05-30 CN CN201210174895.1A patent/CN102810082B/zh active Active
- 2012-05-30 EP EP12170020.7A patent/EP2530600A3/en not_active Ceased
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4400771A (en) * | 1975-12-04 | 1983-08-23 | Tokyo Shibaura Electric Co., Ltd. | Multi-processor system with programmable memory-access priority control |
US5729495A (en) * | 1995-09-29 | 1998-03-17 | Altera Corporation | Dynamic nonvolatile memory cell |
CN101395574A (zh) * | 2006-03-10 | 2009-03-25 | 高通股份有限公司 | 存储器屏障总线命令的有效执行 |
Also Published As
Publication number | Publication date |
---|---|
JP2012252700A (ja) | 2012-12-20 |
EP2530600A3 (en) | 2013-11-27 |
US20120311277A1 (en) | 2012-12-06 |
CN102810082A (zh) | 2012-12-05 |
US9208109B2 (en) | 2015-12-08 |
EP2530600A2 (en) | 2012-12-05 |
JP6113964B2 (ja) | 2017-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102810082B (zh) | 带有动态端口的优先级分配能力的存储器控制器 | |
CN103597460B (zh) | 用于利用存储命令的系统和方法 | |
CN102239523B (zh) | 切换式接口堆叠裸片存储器架构 | |
US6662285B1 (en) | User configurable memory system having local and global memory blocks | |
CN105474319B (zh) | 用于配置混合存储器模块的存储器的i/o的设备及方法 | |
US8046527B2 (en) | Apparatus and method for using a page buffer of a memory device as a temporary cache | |
CN105359120B (zh) | 使用双phy来支持多个pcie链路宽度的存储器和控制器 | |
US7580963B2 (en) | Semiconductor device having an arithmetic unit of a reconfigurable circuit configuration in accordance with stored configuration data and a memory storing fixed value data to be supplied to the arithmetic unit, requiring no data area for storing fixed value data to be set in a configuration memory | |
CN100514494C (zh) | 快闪存储器数据存储装置 | |
CN103366034B (zh) | 具有多级逻辑区域的集成电路 | |
US7822888B2 (en) | Data buffer control which controls selection of path and operation of data buffer, based on stored configuration information | |
US20050093571A1 (en) | Memory re-implementation for field programmable gate arrays | |
CN101460936A (zh) | 具有分级管芯上端接的集成电路 | |
CN106202604B (zh) | 用于配置和重新配置部分重新配置区域的方法和装置 | |
US20090161435A1 (en) | Non-volatile memory device and method of programming the same | |
CN101169772A (zh) | 用于传送命令和地址信号的方法和设备 | |
CN100561595C (zh) | 使用磁芯存储器的熔丝数据存储系统 | |
CN103106142B (zh) | 需要分配地址的器件、器件系统及地址分配方法 | |
TW201225095A (en) | Semiconductor memory device and method of operating the same | |
CN102402422A (zh) | 处理器组件及该组件内存共享的方法 | |
CN107077442A (zh) | 半导体器件及其控制方法 | |
WO2013186889A1 (ja) | I/oデバイス、プログラマブルロジックコントローラ及び演算方法 | |
KR100666241B1 (ko) | 연상 메모리와 그 검색 방법 및 네트워크 기기 및네트워크 시스템 | |
JP4430053B2 (ja) | 半導体メモリシステムおよび半導体メモリチップ | |
CN108459876A (zh) | 用于缩减面积的控制寄存器电路的方法与装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220907 Address after: California, USA Patentee after: INTEL Corp. Address before: California, USA Patentee before: Altera Corp. |