CN107078747A - 具有预配置的存储器仲裁的流水线分层ldpc解码 - Google Patents

具有预配置的存储器仲裁的流水线分层ldpc解码 Download PDF

Info

Publication number
CN107078747A
CN107078747A CN201580055272.4A CN201580055272A CN107078747A CN 107078747 A CN107078747 A CN 107078747A CN 201580055272 A CN201580055272 A CN 201580055272A CN 107078747 A CN107078747 A CN 107078747A
Authority
CN
China
Prior art keywords
memory access
memory
sequence
circuit system
write
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.)
Granted
Application number
CN201580055272.4A
Other languages
English (en)
Other versions
CN107078747B (zh
Inventor
T·A·李
S·D·马哈斯奇
H·基
A·T·埃姆森
D·C·乌里亚纳
N·G·彼得森
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.)
National Instruments Corp
Original Assignee
National Instruments Corp
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 National Instruments Corp filed Critical National Instruments Corp
Publication of CN107078747A publication Critical patent/CN107078747A/zh
Application granted granted Critical
Publication of CN107078747B publication Critical patent/CN107078747B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • 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/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1615Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement using a concurrent pipeline structrure
    • 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/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1626Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1015Read-write modes for single port memories, i.e. having either a random port or a serial port
    • G11C7/1039Read-write modes for single port memories, i.e. having either a random port or a serial port using pipelining techniques, i.e. using latches between functional memory parts, e.g. row/column decoders, I/O buffers, sense amplifiers
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1131Scheduling of bit node or check node processing
    • H03M13/114Shuffled, staggered, layered or turbo decoding schedules
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6563Implementations using multi-port memories
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6566Implementations concerning memory access contentions
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6569Implementation on processors, e.g. DSPs, or software implementations
    • 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)
  • Programmable Controllers (AREA)

Abstract

将当前层的写操作和下一层的读操作流水线化的分层的LDPC解码。为了减少当下一层的读操作试图读取当前层中未更新的变量节点时发生的等待时间的发生,宏矩阵的行被重新布置。剩余的存储器访问冲突由仲裁器解决,该仲裁器接收并且准许存储器访问请求,并且该仲裁器由编译器预配置为具有指示在不对每个变量节点造成停滞的情况下存储器访问的数量或者指示在准许存储器访问之前必须获得的读/写指针的表。

Description

具有预配置的存储器仲裁的流水线分层LDPC解码
技术领域
本公开涉及计算机存储器的领域,更具体而言涉及关于被配置为解决或防止存储器访问冒险的存储器系统的技术。
背景技术
各种计算机程序需要在访问存储器时处理冒险(hazard)。一般而言,当两个操作访问同一存储器地点时,计算系统应当确保访问以正确的顺序发生。各种算法使用常常被迭代执行的存储器操作的序列。例如,错误控制码、加密和各种方程求解算法通常使用复杂的矩阵,对于这样的矩阵,必须以用于各种操作的指定的序列来执行存储器访问。
低密度奇偶校验(LDPC)码是错误控制码的一个示例,并且被用于经潜在地有噪声的信道发送信息。例如,WiMAX和LTE标准利用LDPC码用于数据信道。LDPC通常使用被称为“H矩阵”的奇偶校验矩阵来确定传入的代码块的构成。将LDPC编码的消息解码涉及对应于H矩阵的不同层的迭代的读/修改/写操作。为了减少解码时间,使这些操作流水线化可能是期望的,但是必须解决存储器访问之间的依赖关系,以正确地将流水线化的操作排序。
发明内容
下文给出了被配置为解决或防止访问冒险的存储器以及用于配置或使用这样的存储器的技术的各种实施例。
在一个实施例中,一种装置包括存储器和耦接到存储器或包含在存储器中的电路系统。在该实施例中,该电路系统被配置为接收针对存储器的存储器访问请求序列,其中存储器访问请求序列被配置为访问与矩阵中的条目相关联的地点。在该实施例中,该电路系统被配置为具有用于存储器访问请求序列的存储器访问约束。在该实施例中,该电路系统被配置为以存储器访问约束为依据来准许存储器访问请求序列,从而避免与该存储器访问请求序列对应的存储器访问序列的存储器访问冒险。
在一些实施例中,该装置包括被配置为将存储器访问序列的执行流水线化的流水线电路系统。在这些实施例中,该电路系统可以被配置为基于存储器访问约束来停滞(stall)存储器访问请求序列的流水线化的执行。存储器访问约束可以使用各种格式和编码中的任何格式和编码来指定。例如,在一些实施例中,互锁信息指示读/写指针值。在其它实施例中,互锁信息指示令牌值。在一些实施例中,存储器访问请求序列基于用于处理矩阵的行的迭代操作。在一些实施例中,该电路系统被配置为在不接收指示存储器访问冒险的其它信息(即,没有描述或表征存储器访问冒险的辅助信息)的情况下防止存储器访问冒险。
在一个实施例中,一种方法包括为程序确定存储器访问请求序列,以及基于该存储器访问序列生成指定存储器访问约束的信息,其中该信息可用于避免该存储器访问序列的存储器访问冒险。在该实施例中,方法还包括使用该信息配置第一电路系统,其中第一电路系统被包括在存储器中或耦接到存储器。在该实施例中,在配置之后,第一电路系统可操作以对存储器执行对应于存储器访问序列的存储器访问请求同时避免存储器访问冒险,而无需接收指示存储器访问冒险的其它信息。配置第一电路系统可以使用可编程硬件元件(诸如现场可编程门阵列(FPGA))或其它可编程硬件来执行。此外,配置可以在编译时、运行程序开始时或者在程序运行时的各种时间处执行,以适应变化的条件或者以改进任何数量的性能度量,诸如吞吐量、延迟、功耗、可靠性、资源利用率、误比特率(bit-error rate)等。在一些实施例中,确定是使用编译时执行来执行的。
在一个实施例中,一种方法包括存储对应于要执行的功能的指定的存储器访问序列。在该实施例中,指定的存储器访问序列具有第一存储器访问约束。在该实施例中,该方法还包括将指定的存储器访问序列重新排序,以创建具有第二、不同的存储器访问约束的重新排序的存储器访问序列。在该实施例中,重新排序的存储器访问序列可用于访问存储器,以执行功能。在一些实施例中,为多个重新排序的存储器访问序列确定性能估计,并且基于性能估计选择重新排序的序列中的一个重新排序的序列。在一些实施例中,重新排序的序列被用于编译可用于执行功能的程序。
在一个实施例中,一种装置包括存储器和耦接到存储器或包括在存储器中的寻址电路系统。在该实施例中,寻址电路系统被配置为接收与指定的存储器访问序列对应的存储器访问请求。在该实施例中,存储器访问请求不包括地址信息。在该实施例中,寻址电路系统还被配置为将地址指派给用于指定的存储器访问序列的存储器访问请求。在一些实施例中,该装置被配置为使用所指派的地址来执行存储器访问请求。
在一些实施例中,本文公开的各种技术可以提高存储器访问吞吐量、降低耦接到互锁存储器的设备的复杂性和/或允许对于不同应用将互锁存储器灵活编程或更新。
附图说明
当结合以下附图考虑下面的详细描述时,可以获得对本公开的更好理解,在附图中:
图1A示出了根据本公开的实施例的、被配置为执行程序的计算机系统;
图1B示出了可以实现本公开的实施例的、包括两个或更多个计算机系统的网络系统;
图2A示出了根据本公开的一个实施例的仪器控制系统;
图2B示出了根据本公开的一个实施例的工业自动化系统;
图3A是可以执行或利用包括图形程序的程序的示例性系统的高级框图;
图3B示出了可以执行控制和/或模拟功能的示例性系统;
图4是图1A、1B、2A和2B和3B的计算机系统的示例性框图;
图5示出了包括具有互锁存储器的解码器的系统的一个实施例;
图6A示出了示例性H矩阵;
图6B示出了beta矩阵的一个实施例,图6C示出了重新布置的beta矩阵的一个实施例;
图7A和7B分别示出了示例性基线解码和流水线化的解码时间线;
图8A和8B示出了互锁存储器的相应实施例;
图9示出了互锁表的一个实施例;
图10示出了用于操作互锁存储器的方法的一个实施例;
图11示出了用于使用编译时执行来生成用于互锁存储器的信息的方法的一个实施例;
图12示出了用于确定性能估计并且基于性能估计重新布置存储器访问序列的方法的一个实施例;
图13示出了用于配置互锁存储器的方法的一个实施例;
图14是示出互锁存储器的另一个实施例的框图;
图15A和15B示出了根据一个实施例的示例性beta矩阵、互锁表以及存储器访问操作的流水线化的执行;
图16A和16B示出了用于操作互锁存储器的方法的另一个实施例;
图17示出了使用互锁存储器执行的方法的一个实施例;
图18示出了用于将存储器访问序列重新排序的方法的一个实施例;
图19示出了使用自寻址存储器执行的方法的一个实施例;以及
图20示出了用于对称矩阵的Cholesky因子分解(factorization)的存储器访问序列。
虽然本公开容易有各种修改和可替代形式,但是其具体实施例在附图中作为示例示出并且在本文中被详细描述。然而,应当理解,附图以及对其的详细描述不旨在将本发明限制到所公开的特定形式,而是相反,本发明将涵盖落入如由所附权利要求定义的本公开的精神和范围内的所有修改、等价物和替代物。
术语“被配置为”在本文中被用来通过指示单元/电路/组件包括在操作期间执行一个或多个任务的结构(例如,电路系统)来意指结构。因此,即使当单元/电路/组件当前不可操作(例如,没有开启),指定的单元/电路/组件也可以被称为被配置为执行任务。与“被配置为”语言一起使用的单元/电路/组件包括硬件–-例如,存储可执行以实现操作的程序指令的存储器、电路等。记载单元/电路/组件“被配置为”执行一个或多个任务明确地不是旨在要对该单元/电路/组件援引35U.S.C.§112(f)。
具体实施方式
通过引用并入:
在此通过引用并入以下参考文献的全部内容,如同在本文中完全和完整地阐述了一样:
1990年4月3日发布的标题为“Graphical System for Modeling a Process andAssociated Method”的美国专利No.4,914,568。
标题为“Method and Apparatus for Providing Attribute Nodes in aGraphical Data Flow Environment”的美国专利No.5,481,741。
1997年8月18日提交的标题为“Embedded Graphical Programming System”的美国专利No.6,173,438。
1997年8月18日提交的标题为“System and Method for Configuring anInstrument to Perform Measurement Functions Utilizing Conversion of GraphicalPrograms into Hardware Implementations”的美国专利No.6,219,628。
2000年12月20日提交的标题为“System and Method for ProgrammaticallyGenerating a Graphical Program in Response to Program Information”的美国专利No.7,210,117。
2012年8月23日提交的标题为“Compile Time Execution”的美国专利申请No.13/592,995。
术语
以下是在本申请中使用的术语词汇表:
存储介质—各种类型的非暂态计算机可存取存储器设备或储存设备中的任何类型。术语“存储介质”旨在包括:安装介质,例如CD-ROM、软盘104或者带设备;计算机系统存储器或随机存取存储器,诸如DRAM、DDR RAM、SRAM、EDO RAM、Rambus RAM等;诸如闪存、磁介质之类的非易失性存储器,例如,硬盘驱动器、或者光存储装置;寄存器、或者其它类似类型的存储元件,等等。存储介质还可以包括其它类型的非暂态存储器或其组合。此外,存储介质可以位于执行程序的第一计算机中,或者可以位于经诸如因特网之类的网络连接到第一计算机的第二不同的计算机中。在后一种实例中,第二计算机可以将程序指令提供给第一计算机以用于执行。术语“存储介质”可以包括两个或更多个存储介质,该两个或更多个存储介质可以驻留在不同的地点中,例如驻留在经网络连接的不同计算机中。
载体介质—如上文描述的存储介质以及物理传输介质,诸如总线、网络和/或传送诸如电信号、电磁信号或数字信号之类的信号的其它物理传输介质。
可编程硬件元件—包括各种硬件设备,这些硬件设备包括经由可编程互连连接的多个可编程功能块。示例包括FPGA(现场可编程门阵列)、PLD(可编程逻辑器件)、FPOA(现场可编程对象阵列)和CPLD(复杂PLD)。可编程功能块的范围可以从细粒度的可编程功能块(组合逻辑或查找表)到粗粒度的可编程功能块(算术逻辑单元或处理器核)。可编程硬件元件还可以被称为“可重配置逻辑”。
软件程序—术语“软件程序”旨在具有它的普通含义的全部宽度,并且包括可以被存储在存储介质中并且由处理器执行的任何类型的程序指令、代码、脚本和/或数据或其组合。示例性软件程序包括:以基于文本的编程语言(诸如C、C++、PASCAL、FORTRAN、COBOL、JAVA、汇编语言等)编写的程序;图形程序(以图形编程语言编写的程序);汇编语言程序;已经被编译成机器语言的程序;脚本;以及其它类型的可执行软件。软件程序可以包括以某种方式互操作的两个或更多个软件程序。注意到,本文描述的各种实施例可以由计算机或软件程序来实现。软件程序可以作为程序指令被存储在存储介质上。
硬件配置程序—可以被用于将可编程硬件元件编程或配置可编程硬件元件的程序,例如网表或位文件。
程序—术语“程序”旨在具有它的普通含义的全部宽度。术语“程序”包括:1)可以被存储在存储器中并且可由处理器执行的软件程序,或者2)可用于配置可编程硬件元件的硬件配置程序。
图形程序—包括多个互连的节点或图标的程序,其中该多个互连的节点或图标在视觉上指示程序的功能。互连的节点或图标是用于程序的图形源代码。图形功能节点还可以被称为块。
以下提供图形程序的各个方面的示例。以下示例和讨论不旨在限制图形程序的上面的定义,而是提供术语“图形程序”涵盖什么的示例:
图形程序中的节点可以以数据流、控制流和/或执行流格式中的一个或多个被连接。节点还可以以“信号流”格式被连接,“信号流”格式是数据流的子集。
可以被用于创建图形程序的示例性图形程序开发环境包括来自NationalInstruments的DasyLabTM、DIADemTM和Matrixx/SystemBuildTM、来自MathWorks的来自Agilent的VEETM、来自Coreco的WiTTM、来自PPT Vision的Vision Program ManagerTM、来自Measurement Computing的SoftWIRETM、来自NorthwoodsSoftware的SanscriptTM、来自Khoral Reasearch的KhorosTM、来自HEM Data的SnapMasterTM、来自Visual Solutions的VisSimTM、SES(科学和工程软件)的ObjectBenchTM以及来自Advantech的VisiDAQTM,等等。
术语“图形程序”包括在图形建模环境中创建的模型或框图,其中该模型或框图包括在视觉上指示模型或框图的操作的互连的框(即,节点)或图标;示例性图形建模环境包括SystemBuildTM、VisSimTM、Hypersignal Block DiagramTM等。
图形程序可以在计算机系统的存储器中被表示为数据结构和/或程序指令。图形程序(例如,这些数据结构和/或程序指令)可以被编译或解释,以产生实现如图形程序中所示的期望的方法或过程的机器语言。
到图形程序的输入数据可以从各种源中的任何源接收,诸如从设备、被测试的单元、被测量或控制的过程、另一个计算机程序、数据库接收,或者从文件接收。而且,用户可以使用图形用户界面(例如,前面板)向图形程序或虚拟仪器输入数据。
图形程序可以可选地具有与图形程序相关联的GUI。在这种情况下,该多个互连的框或节点常常被称为图形程序的框图部分。
节点—在图形程序的上下文中,可以被包括在图形程序中的元素。图形程序中的图形程序节点(或简称为节点)还可以被称为块。节点可以具有表示图形程序中的节点的相关联的图标,以及实现该节点的功能的底层代码和/或数据。示例性节点(或块)包括功能节点、子程序节点、终端节点、结构节点等。节点可以通过连接图标或线在图形程序中被连接在一起。
数据流程序—一种软件程序,在该软件程序中程序架构是指定通过程序的数据流的有向图的架构,因此每当必需的输入数据可用时功能就执行。换句话说,数据流程序根据如下计算的数据流模型执行:其中响应于程序功能必需的输入数据变得可用,在该计算的数据流模型下调度该程序功能以供执行。数据流程序可以与指定要被执行的计算的执行流的过程程序形成对比。本文所使用的“数据流”或“数据流程序”指的是“动态调度的数据流”和/或“静态定义的数据流”。
图形数据流程序(或图形数据流图)—也是数据流程序的图形程序。图形数据流程序包括多个互连节点(块),其中,至少节点之间的连接的子集在视觉上指示一个节点产生的数据由另一个节点使用。LabVIEW VI是图形数据流程序的一个示例。Simulink框图是图形数据流程序的另一个示例。
图形用户界面—这个术语旨在具有它的普通含义的全部宽度。术语“图形用户界面”常常缩写为“GUI”。GUI可以仅包括一个或多个输入GUI元素、仅包括一个或多个输出GUI元素、或者包括输入GUI元素和输出GUI元素二者。
以下提供GUI的各个方面的示例。以下示例和讨论不旨在限制GUI的普通含义,而是提供术语“图形用户界面”涵盖什么的示例:
GUI可以包括具有一个或多个GUI元素的单个窗口,或者可以包括多个单独的GUI元素(或者各自具有一个或多个GUI元素的单独窗口),其中单独的GUI元素或窗口可以可选地被平铺(tile)在一起。
GUI可以与图形程序相关联。在该实例中,可以使用各种机制来将GUI中的GUI元素与图形程序中的节点连接。例如,当在GUI中创建输入控件和输出指示物时,可以在图形程序或框图中自动创建对应的节点(例如,终端)。可替代地,用户可以将终端节点放在框图中,这可以导致或者在编辑时或者稍后在运行时在GUI中显示对应的GUI元素前面板对象。作为另一个示例,GUI可以包括嵌入图形程序的框图部分中的GUI元素。
前面板—图形用户界面,该图形用户界面包括输入控件和输出指示物,并且使得用户能够在程序执行时交互地控制或操纵提供给程序的输入,并且查看程序的输出。
前面板是一种类型的GUI。前面板可以与如上文描述的图形程序相关联。
在仪器应用中,前面板可以被类比为仪器的前面板。在工业自动化应用中,前面板可以被类比为设备的MMI(人机接口)。用户可以调整前面板上的控件,以影响输入并且查看相应指示物上的输出。
图形用户界面元素—图形用户界面的元素,诸如以用于提供输入或显示输出。示例性图形用户界面元素包括输入控件和输出指示物。
输入控件—用于向程序提供用户输入的图形用户界面元素。输入控件显示用户输入的值并且能够由用户自行操纵。示例性输入控件包括拨盘、旋钮、滑块、输入文本框等。
输出指示物—用于显示来自程序的输出的图形用户界面元素。示例性输出指示物包括图表、图、量规(gauge)、输出文本框、数字显示等。输出指示物有时被称为“输出控件”。
计算机系统—各种类型的计算系统或处理系统中的任何计算系统或处理系统,包括个人计算机系统(PC)、大型机计算机系统、工作站、网络装备、因特网装备、个人数字助理(PDA)、电视系统、网格计算系统或者其它设备或设备的组合。一般地,术语“计算机系统”可以被广泛地定义为涵盖具有执行来自存储介质的指令的至少一个处理器的任何设备(或设备的组合)。
测量设备—包括仪器、数据获取设备、智能传感器以及被配置为获取和/或存储数据的各种类型的设备中的任何设备。测量设备还可以可选地被进一步配置为分析或处理获取的或存储的数据。测量设备的示例包括仪器(诸如传统的独立“盒”仪器、基于计算机的仪器(卡上的仪器)或外部仪器)、数据获取卡、计算机外部的与数据获取卡类似地操作的设备、智能传感器、机箱中的一个或多个DAQ或测量卡或模块、诸如图像获取(或机器视觉)卡(也被称为视频捕获板)或智能相机之类的图像获取设备、运动控制设备、具有机器视觉的机器人、以及其它相似类型的设备。示例性“独立”仪器包括示波器、万用表、信号分析仪、任意波形发生器、光谱仪、以及类似的测量仪器、测试仪器或自动化仪器。
测量设备还可以被配置为例如响应于对所获取的或存储的数据的分析而执行控制功能。例如,测量设备可以响应于特定数据而向外部系统(诸如向运动控制系统或向传感器)发送控制信号。测量设备还可以被配置为执行自动化功能,即可以接收和分析数据,并且作为响应发出自动化控制信号。
功能单元(或处理元件)—指各种元件或元件的组合。处理元件包括例如诸如ASIC(专用集成电路)之类的电路、单独的处理器核的部分或电路、全部处理器核、单独的处理器、诸如现场可编程门阵列(FPGA)之类的可编程硬件设备和/或包括多个处理器的系统的较大的部分以及其任何组合。
自动地—指在没有直接指定或执行动作或操作的用户输入的情况下,由计算机系统(例如,由计算机系统执行的软件)或设备(例如,电路系统、可编程硬件元件、ASIC,等等)执行的动作或操作。因此,术语“自动地”与其中用户提供输入来直接执行操作的由用户手动执行或指定的操作形成对照。自动过程可以由用户提供的输入发起,但是被“自动地”执行的后续动作不是由用户指定的,即,不是“手动地”执行的,其中在“手动地”执行中用户指定要执行的每个动作。例如,通过选择每个字段并且提供指定信息的输入(例如,通过键入信息、选择复选框、单选选择,等等)来填写电子表格的用户是在手动地填写表格,即使计算机系统必须响应于用户动作来更新表格。表格可以由计算机系统自动填写,其中计算机系统(例如,在计算机系统上执行的软件)分析表格的字段并且在没有指定字段答案的任何用户输入的情况下填写表格。如上所述,用户可以调用表格的自动填写,但是不参与表格的实际填写(例如,用户不是手动地指定字段的答案,而是这些字段被自动地完成)。本说明书提供了响应于用户已采取的动作而被自动执行的操作的各种示例。
并发—指并行执行或实施,其中,任务、过程或程序以至少部分重叠的方式被执行。例如,并发性可以使用其中任务在相应的计算元件上(至少部分地)并行执行的“强”或严格的并行性来实现,或者使用其中(例如通过执行线程的时分复用)任务以交错方式执行的“弱并行性”来实现。
图1A–计算机系统
图1A示出了根据一些实施例的被配置为执行被配置为对互锁存储器编程和/或利用互锁存储器的程序(例如,图形程序)的示例性计算机系统82。注意到,虽然实施例中的一些实施例依据图形程序来描述,但是所公开的技术也广泛适用于基于文本的程序,因此所描述的实施例的所描述的图形程序方面应当被认为仅仅是示例性的,即,参考图形程序描述的新技术还适用于基于文本的程序。
如图1A中所示,计算机系统82可以包括被配置为当图形程序被创建和/或执行时显示该图形程序的显示设备。显示设备还可以被配置为在图形程序的执行期间显示该图形程序的图形用户界面或前面板。图形用户界面可以包括例如依赖于计算平台的任何类型的图形用户界面。
计算机系统82可以包括在其上可以存储根据本公开的一个实施例的一个或多个计算机程序或软件组件的至少一个存储介质。例如,存储介质可以存储一个或多个图形(或基于文本的)程序,该一个或多个图形(或基于文本的)程序是可执行的,以执行本文描述的方法。此外,存储介质可以存储被用于创建和/或执行这样的图形(或基于文本的)程序的图形(或基于文本的)编程开发环境应用。存储介质还可以存储操作系统软件,以及用于计算机系统的操作的其它软件。各种实施例还包括在载体介质上接收或存储根据前述描述实现的指令和/或数据。
图1B–计算机网络
图1B示出了包括耦接到第二计算机系统90的第一计算机系统82的系统。计算机系统82可以经由网络84(或计算机总线)耦接到第二计算机系统90。计算机系统82和90可以根据期望各自是各种类型中的任何类型。网络84也可以是各种类型中的任何类型,包括LAN(局域网)、WAN(广域网)、因特网或内联网等。计算机系统82和90可以以分布的方式执行图形程序。例如,计算机82可以执行图形程序的框图的第一部分,计算机系统90可以执行图形程序的框图的第二部分。作为另一个示例,计算机82可以显示图形程序的图形用户界面,计算机系统90可以执行图形程序的框图。
在一个实施例中,图形程序的图形用户界面可以在计算机系统82的显示设备上显示,并且框图可以在耦接到计算机系统82的设备上执行。该设备可以包括可编程硬件元件和/或可以包括可以执行实时操作系统的处理器和存储介质。在一个实施例中,可以在设备上下载和执行图形程序。例如,图形程序所关联的应用开发环境可以为在实时系统中在设备上下载图形程序以便执行提供支持。
示例性系统
本公开的实施例可以涉及执行测试和/或测量功能;控制和/或建模仪器或工业自动化硬件;建模和模拟功能,例如建模或模拟正在被开发或测试的设备或产品,等等。其中可以使用图形程序的示例性测试应用包括硬件在回路(hardware-in-the-loop)测试和快速控制原型等。
然而,应当指出,本发明的实施例可以被用于许多应用,并且不限于上述应用。换句话说,在本说明书中讨论的应用仅仅是示例性的,并且本发明的实施例可以被用于各种类型的系统中的任何类型的系统中。因此,本发明的系统和方法的实施例被配置为在各种类型的应用中的任何类型的应用中被使用,这些应用包括其它类型的设备(诸如多媒体设备、视频设备、音频设备、电话设备、因特网设备等)的控制、以及通用软件应用(诸如字处理、电子表格、网络控制、网络监视、金融应用、游戏等)。
图2A示出了可以实现本发明的实施例的示例性仪器控制系统100。系统100包括耦接到一个或多个仪器的主计算机82。主计算机82可以包括CPU、显示屏、存储器以及一个或多个输入设备(诸如如图所示的鼠标或键盘)。计算机82可以与一个或多个仪器一起操作,以例如经由软件104的执行来分析、测量或控制被测单元(unit under test,UUT)或过程150。
一个或多个仪器可以包括GPIB仪器112和相关联的GPIB接口卡122、被插入到具有相关联的信号调节电路系统126的机箱124中或以其它方式与机箱124耦接的数据获取板114、VXI仪器116、PXI仪器118、视频设备或相机132以及相关联的图像获取(或机器视觉)卡134、运动控制设备136和相关联的运动控制接口卡138、和/或一个或多个基于计算机的仪器卡142,以及其它类型的设备。计算机系统可以耦接到这些仪器中的一个或多个仪器并且与该一个或多个仪器一起操作。仪器可以被耦接到被测单元(UUT)或过程150,或者可以被耦接以接收通常由换能器生成的场信号。系统100可以在数据获取和控制应用中、在测试和测量应用中、在图像处理或机器视觉应用中、在过程控制应用中、在人机接口应用中、在模拟应用中或者在硬件在回路验证应用中等被使用。
图2B示出了可以实现本发明的实施例的示例性工业自动化系统200。工业自动化系统200类似于图2A中所示的仪器或测试和测量系统100。为了方便,与图2A中的元件相似或相同的元件具有相同的附图标记。系统200可以包括耦接到一个或多个设备或仪器的计算机82。计算机82可以包括CPU、显示屏、存储器以及一个或多个输入设备(诸如如图所示的鼠标或键盘)。计算机82可以与一个或多个设备一起操作,以例如经由软件104的执行来执行关于过程或设备150的自动化功能,诸如MMI(人机接口)、SCADA(监督控制和数据获取)、便携式或分布式数据获取、过程控制、高级分析或其它控制等。
一个或多个设备可以包括插入到具有相关联的信号调节电路系统126的机箱124中或以其它方式与机箱124耦接的数据获取板114、PXI仪器118、视频设备132和相关联的图像获取卡134、运动控制设备136和相关联的运动控制接口卡138、现场总线设备270和相关联的现场总线接口卡172、PLC(可编程逻辑控制器)176、串行仪器282和相关联的串行接口卡184、或分布式数据获取系统(诸如可以从国家仪器公司获得的现场点(Fieldpoint)系统185)、以及其它类型的设备。
图3A是可以执行或利用程序(例如,图形程序)的示例性系统的高级框图。图3A示出了包括控制器92和设施(plant)94的通用控制和/或模拟系统的总体高级框图。控制器92表示用户可以试图开发的控制系统/算法。设施94表示用户可以试图控制的系统。例如,如果用户正在设计用于汽车的ECU,则控制器92是ECU,并且设施94是汽车的引擎(以及可能其它组件,诸如变速器、制动器等)。如图所示,用户可以创建指定或实现控制器92和设施94中的一个或两者的功能的图形程序。例如,控制工程师可以使用建模和模拟工具来创建设施94的模型(图形程序)和/或创建用于控制器92的算法(图形程序)。
图3B示出了可以执行控制和/或模拟功能的示例性系统。如图所示,控制器92可以由执行或实现图形程序的计算机系统82或其它设备(例如,包括处理器和存储介质和/或包括可编程硬件元件的设备)来实现。以类似的方式,设施94可以由执行或实现图形程序的计算机系统或其它设备144(例如,包括处理器和存储介质和/或包括可编程硬件元件的设备)来实现,或者可以在真实的物理系统(例如,汽车引擎)中实现或被实现为真实的物理系统。
在一个实施例中,可以创建在执行快速控制原型中使用的一个或多个图形程序。快速控制原型(RCP)一般是指用户通过其开发控制算法并且在被连接到真实系统的目标控制器上快速执行该算法的过程。用户可以使用图形程序来开发控制算法,并且图形程序可以在控制器92上(例如,在计算机系统或其它设备上)执行。计算机系统82可以是支持实时执行的平台,例如,包括执行实时操作系统(RTOS)的处理器的设备或者包括可编程硬件元件的设备。
在一个实施例中,可以创建在执行硬件在回路(HIL)模拟中使用的一个或多个图形程序。硬件在回路(HIL)是指设施模型94的实时执行,以测试真实控制器92的操作。例如,一旦控制器92已经被设计出来,则在真实的设施(例如,真实的汽车)中实际地彻底测试控制器92可能是昂贵和复杂的。因此,(由图形程序实现的)设施模型被实时地执行,以使真实的控制器92“相信”它被连接到真实的设施(例如,真实的引擎)或者像它被连接到真实的设施一样操作。
在上面的图2A、2B和3B的实施例中,各种设备中的一个或多个可以经诸如因特网之类的网络彼此耦接。在一个实施例中,用户操作以从多个可能的目标设备中选择目标设备,以用于使用程序(例如,图形程序)进行编程或配置。因此,用户可以在计算机上创建图形程序并且在该计算机上使用(执行)该图形程序或者将该图形程序部署到远离该计算机定位并且通过网络耦接到该计算机的目标设备(以用于在该目标设备上远程执行)。
(诸如在图2A和2B所示的应用中)执行(例如用于测量、仪器控制、工业自动化、建模或模拟的)数据获取、分析和/或呈现的图形软件程序可以被称为虚拟仪器。
图4–计算机系统框图
图4是表示图1A和1B中所示的计算机系统82和/或90或者图2A或2B中所示的计算机系统82的一个实施例的框图12。应当指出,可以根据期望使用任何类型的计算机系统配置或架构,并且图4示出了代表性的PC实施例。还应当指出,计算机系统可以是通用计算机系统、在安装在机箱中的卡上实现的计算机或者其它类型的实施例。为了简单起见,省略了对理解本描述不是必需的计算机元件。
计算机可以包括耦接到处理器或主机总线162的至少一个中央处理单元或CPU(处理器)160。CPU 160可以是各种类型中的任何类型,这些类型包括x86处理器,例如Pentium(奔腾)级、PowerPC处理器、来自RISC处理器的SPARC系列的CPU、以及其它处理器。通常包括RAM并且被称为主存储器的存储介质166通过存储器控制器164耦接到主机总线162。主存储器166可以存储被配置为对互锁存储器编程和/或利用互锁存储器的一个或多个程序。主存储器还可以存储操作系统软件以及用于计算机系统的操作的其它软件。
主机总线162可以通过总线控制器168或总线桥逻辑耦接到扩展总线或输入/输出总线170。扩展总线170可以是PCI(外围组件互连)扩展总线,但是还可以使用其它总线类型。扩展总线170包括用于诸如上文所描述的设备之类的各种设备的槽。计算机82还包括耦接到扩展总线170的视频显示子系统180和硬盘驱动器182。计算机82还可以包括耦接到GPIB总线112的GPIB卡122和/或耦接到VXI机箱116的MXI设备186。
如图所示,设备190也可以连接到计算机。设备190可以包括可以执行实时操作系统的处理器和存储器。设备190还可以包括或者替代地包括可编程硬件元件。计算机系统可以被配置为将程序(例如,图形程序)部署到设备190,以用于在设备190上执行图形程序。所部署的图形程序可以采取直接表示图形程序的图形程序指令或数据结构的形式。可替代地,所部署的图形程序可以采取从图形程序生成的文本代码(例如,C代码)的形式。作为另一个示例,所部署的图形程序可以采取从图形程序生成的编译代码或者从图形程序所生成的文本代码进而生成的编译代码的形式。如上面所指出的,在一些实施例中,(一个或多个)程序可以是基于文本的。
示例性LDPC解码器
下面参考图5-16讨论的各种实施例涉及与解码纠错码并且特别是低密度奇偶校验(LDPC)码相关联的技术。然而,除了这种解码之外和/或作为这种解码的代替,类似的技术可以被应用于各种算法。为了解释的目的而讨论LDPC码,但并不旨在限制本技术的范围。本文讨论的互锁存储器、性能建模、硬件编程、存储器序列重新布置和/或自寻址技术的实施例可以在用于各种算法中的任何算法的各种上下文中被应用,这些算法可以是本文明确列出的或者可以是没有明确列出的。
这样的算法的示例包括但不限于:错误控制码、图形编码/解码、源编码、密码学、最大似然检测器、最大后验检测器、压缩、多输入多输出(MIMO)通信、波束形成、波束操控、微分方程求解、线性方程求解、线性代数、优化、检测和估计、联网、机器学习、信道估计、图像处理、运动控制、过程控制、生物信息学、动态编程、大数据应用、计算信息学、物联网等。因此,存储器访问序列可以基于以下项中的一个或多个和/或从以下项中的一个或多个导出但不限于这些项:奇偶校验矩阵、生成器矩阵、信道矩阵、解码算法中的节点和/或边缘的数量、天线的数量、信道抽头(tap)的数量、压缩比、角度范围、多项式的次数、方程的数量、局部和/或全局最大值和/或最小值、网络节点的数量,等等。
线性代数算法的示例性实施例包括但不限于:对称秩-k更新、对称秩-2k更新、Cholesky因子分解(正定矩阵分解为下三角矩阵及其共轭转置的乘积)、更新Cholesky因子分解(例如,当先前分解的矩阵以某种方式改变时)、下上(lower upper,LU)因子分解(矩阵分解为下三角矩阵和上三角矩阵的乘积)、QR因子分解(矩阵分解为正交矩阵Q和上三角矩阵R的乘积)、更新QR因子分解、LQ因子分解、三角矩阵求逆、约简为Hessenberg形式、约简为双对角形式、约简为三对角形式、三角矩阵Lyapunov方程求解、三角矩阵Sylvester方程求解,等等。
图5示出了包括LDPC解码器的示例性系统的一个实施例。在所示实施例中,系统500包括编码器510、解码器520、调制器530和解调器540。
在所示实施例中,编码器510被配置为接收要被发送的消息、(例如,使用LDPC生成器矩阵)对消息进行编码以及将编码的消息发送到调制器530。
在所示实施例中,调制器530被配置为将编码消息的位变换和/或分组成符号以用于无线传输到耦接到解调器540的天线,即,被配置为调制编码消息以用于传输。无线传输可以符合各种传输标准中的任何传输标准。在其它实施例中,传输可以不是无线的。
在所示实施例中,解调器540被配置为解调接收到的信号,以生成编码消息。然而,由于传输中的噪声,可能难以确定编码消息中的元素的值(例如,位的极性)。在许多情况下,LDPC解码可以允许原始消息的准确重建。
在所示实施例中,解码器520被配置为例如基于奇偶校验矩阵(奇偶校验矩阵常常用字母“H”表示并且可以被称为“H矩阵”)来重建原始消息,即,被配置为将编码消息解码,由此恢复原始消息。在所示实施例中,解码器520包括互锁存储器550,互锁存储器550可以被配置为解决或防止对应于与奇偶校验矩阵相关联的操作的访问冒险。下面进一步详细描述互锁存储器550的实施例。解码器520可以包括用于基于奇偶校验矩阵来执行存储器访问的流水线化的数据路径,并且本文公开的各种技术可以降低流水线化的数据路径中的延迟。解码器520可以被配置为将解码的消息发送到接收者硬件(未示出)。
图6A示出了示出H矩阵620的示例性实施例的图。在所示实施例中,H矩阵620是奇偶校验矩阵并且每个位置中的数字指示循环移位量。H矩阵620中的空白位置指示“不关心”,其中没有指示移位量(例如,因为它不被使用)。
在一些实施例中,为了使用LDPC解码接收到的信号,解码器520被配置为遍历(iterate through)H矩阵620的层(在所示实施例中为对应于矩阵的行的12层),以解码接收到的信号。例如,解码器520可以读取层中的相关位置、确定最小值或最大值以及在前进到下一层之前基于所确定的最小值或最大值来更新用于该层的值。在所示实施例中,H矩阵620是12×24矩阵,但是在其它实施例中可以使用各种矩阵大小中的任何矩阵大小。
图6B示出了示出beta矩阵640的示例性实施例的图。在所示实施例中,Beta矩阵640将用于H矩阵620的层L1至L12的迭代处理的存储器读/写地址进行编码。在一些实施例中,编码的地址对应于互锁存储器550中的地点。在所示实施例中,beta矩阵640是基于H矩阵620形成的,并且指示H矩阵620中相关的(例如,不是“不关心”的)位置的块索引。例如,H矩阵620中位于层L1和块索引4处的位置具有值50,使得块索引(4)被包括在beta矩阵640中的层L1中。在所示实施例中,beta矩阵640还包括一些空白的“不关心”的位置,这些空白的“不关心”的位置可以被包括,以便维护规则的矩阵。
在所示实施例中,beta矩阵640仅包括在H矩阵620中包括的列的数量的三分之一。相对于为H矩阵620中的每个位置执行操作,这可以显著地提高LDPC解码性能,例如在一些实施例中提高多达三倍。
在一些实施例中,解码器520被配置为在层中迭代地处理beta矩阵640。在该示例中,为了处理第一层,解码器520被配置为读取存储器地点0、4、6、8、10、12和13、修改检索出的数据中的至少一些数据以及将修改后的数据写回到相同的地点中的至少一些地点。在一个实施例中,解码器520被配置为计算用于给定层的最小值,并且在前进到下一层之前基于该最小值来计算新值以写回到相同的地点。因此,用于给定层的操作可以依赖于为前一层写入的值。流水线化存储器访问以提高性能可能是期望的。然而,应当指出,例如,层2中的第一个地点与层1中的第一个地点相同(都是地点0)。因此,对于层2的地点0的读取依赖于层1的写入。在一些实施例中,互锁存储器550被配置为通过等待直至层1的写入已经完成才执行层2的读取来解决该依赖性。读取的这种停滞可以确保正确性。然而,为了提高流水线化实现中的读/写性能,可能期望减少这种停滞。
图6C示出了示出重新布置的beta矩阵660的一个实施例的图。在所示实施例中,通过重新布置beta矩阵640的每行中的位置来形成重新布置的beta矩阵。这种重新布置可以减少读/写冒险,并且因此提高存储器访问性能。例如,考虑对以粗体示出的地点0的访问。对于层二的地点0的读取已经被移位,使得对于层一的地点0的写入可以在对于层二的读取之前完成,因此避免了在流水线化实现中的停滞的需要。因此,在各种实施例中,存储器访问序列可以被重新布置,以提高存储器性能。例如,这种重新布置可以由编译器和/或由用于互锁存储器550的配置电路系统自动执行。下面参考图12讨论用于性能建模和选择重新布置的存储器访问序列的技术。
现在参考图7A,示出了示出根据一个实施例的基线解码710的时间线的图。在图7A-7B中,阴影矩形指示写入,而非阴影矩形指示读取。
在图7A的示例中,针对beta矩阵660的层1的所有地点发生读取,这至少花费八个周期(假设每周期发起一个读取)。然后层1的所有地点被写入,在示出的示例中这至少花费另外八个周期。然后,对层二的处理以类似的读取序列开始,随后是写入序列。
现在参考图7B,示出了示出根据一个实施例的流水线化的解码720的时间线的图。在一些实施例中,解码器520被配置为流水线化存储器访问的执行。在所示示例中,对于层1的读取一完成,对于层2的读取就开始。相对于基线解码710,这可以显著地提高解码性能,例如,提高多达两倍。应当指出,仍然必须(例如,通过将气泡插入流水线中)解决或防止冒险,但是在一些实施例中,(例如,使用重新布置的beta矩阵660)重新布置存储器访问序列可以大大减少冒险。
本文讨论了各种流水线化存储器访问方法,但是应当指出,在其它实施例中,所公开的技术可以在非流水线化存储器访问的上下文中被使用。
在一些实施例中,存储器访问可以被完全流水线化,以使得不包括(barring)用于解决冒险的停滞(图7B中未示出),每个周期如果可用的话则发出一个或多个读和写。在一些实施例中,存储器可以是多端口的,从而允许在给定周期中发出多个读和/或写,这可以相对于基线解码710进一步提高性能。
示例性互锁存储器
图8A示出了示出互锁存储器550的一个实施例的框图。在所示实施例中,互锁存储器550包括存储器810和仲裁器(arbiter)830。在所示实施例中,仲裁器830包括被配置为接收读和写请求以及准许这些请求的电路系统,从而解决或防止/避免在过程中访问存储器810中的任何冒险。互锁存储器550可以被配置为避免存储器访问冒险,而无需接收指示冒险的信息连同对应于该序列的存储器访问请求(例如,互锁存储器550可以被配置为基于内部配置来避免冒险)。仲裁器830可以被配置为具有用于存储器访问请求序列的存储器访问约束,存储器访问约束的示例性实施例在下面参考图9和图14-15来描述。这些存储器访问约束可以被称为“互锁信息”。在一些实施例中,基于要使用互锁存储器550执行的指定的存储器访问序列来填充互锁信息。
如本文所使用的,“配置为具有存储器访问约束”或“使用存储器访问约束来配置”的电路系统旨在包括以下配置,其中:1)电路系统存储信息,例如包含关于存储器访问约束的信息的数据结构或表,2)电路系统包括被配置为实现存储器访问约束的专用电路系统(例如,ASIC),和/或3)电路系统包括被编程为实现存储器访问约束的可编程电路系统。在一些实施例中,被配置为具有存储器访问约束的冒险电路系统可以被分组在一个地点中,或者可以是分布式的(例如,被分布在流水线化存储器访问数据路径的阶段之间)。
在所示实施例中,存储器810被配置为如仲裁器830所允许的存储接收到的写入数据并且提供读取数据。在一些实施例中,存储器810是多端口的,以允许在给定的周期中发起多个读和/或多个写。例如,存储器810的双端口实施例可以允许在同一周期中发起对两个不同地点的写入。在一些实施例中,存储器810包括多个存储体(bank)。在一些实施例中,每个存储体允许每周期仅发起一个读和一个写,但是可以在同一周期中(例如并发地)访问不同的存储体。
图8B示出了示出互锁存储器550的另一个实施例的框图。在所示实施例中,互锁存储器550包括地址生成器820。图8B的其它元件可以如上文参考图8A的被类似编号的元件所描述的来配置。在所示实施例中,地址生成器820包括被配置为生成用于读和写请求的地址的电路系统。例如,互锁存储器550可以针对存储器访问的特定数组或矩阵而被配置,并且地址生成器820可以被配置为基于请求被接收的顺序来为这些请求指派地址。在一些实施例中,这可以允许互锁存储器550是自寻址的,以使得程序可以仅提供无地址信息的存储器访问请求,并且互锁存储器550被配置为生成用于对应的访问的适当的地址。在一些实施例中,在编译期间确定程序中的存储器访问的序列和/或地址,这可以包括如下文参考图11所讨论的编译时执行。在一些实施例中,互锁存储器550包括一个或多个可编程硬件元件,以使得它可以针对不同的程序和/或算法来容易地重新配置。
在一些实施例中,互锁存储器550可以包括被配置为执行与存储器系统相关联的数据转发、高速缓存、预取等的附加元件(未示出)。在一些实施例中,互锁存储器550包括被配置为基于即将到来的存储器访问地址来执行和/或调整高速缓存、预取、数据转发等中的一个或多个的前瞻(look-ahead)电路系统,以改进性能。在各种实施例中,互锁存储器550被包括在设备(诸如LDPC解码器或各种适当设备中的任何设备)中。本文讨论的各种技术可以被用于改进包括一个或多个互锁存储器的各种设备中的任何设备的性能。
图9示出了重新布置的beta矩阵660和对应的互锁表900的前五层的副本。在各种实施例中,互锁表被用于指定用于存储器访问序列的存储器访问约束。互锁表可以被存储在互锁存储器系统中,和/或各种电路系统可以以其它方式被配置为具有存储器访问约束(例如,而不是维护由给定互锁表指定的特定信息)。所示出的(一个或多个)互锁表被提供以便于解释特定存储器访问约束。在一些实施例中,针对给定的程序或矩阵生成互锁表900,并且互锁存储器550被配置为具有由互锁表900指定的存储器访问约束。在所示实施例中,互锁表900中的空白条目指示对应的访问可以在任何时间执行,因为对于该访问不存在冒险。
在一些实施例中,互锁存储器550包括在执行程序之前被初始化为零的读计数器和写计数器。在这些实施例中,当执行给定的读操作时,互锁存储器550可以被配置为将当前写指针与互锁表900中对应于读指针的的条目进行比较,并且仅当写指针大于该条目时才允许读取。例如,考虑重新布置的beta矩阵660中的行3、列3中的条目,该条目指示地点0。互锁表900中的对应条目包含9。因此,在这个实施例中,直到写计数器至少为10,才能从重新布置的beta矩阵660中的对于行3、列3的地点0执行读取。应当指出,当写计数器为10时,对于该存储器操作序列,地点0将已经(基于重新布置的beta矩阵660中的行2、列2)被写入,因此避免了潜在的冒险。类似的技术可以被用于写入。例如,在一些实施例中,互锁存储器550被配置为仅当当前读指针大于互锁表中由写指针指示的条目时才准许写入。
在一些实施例中,互锁存储器550不被配置为对写操作执行冒险检查,因为冒险已经由数据流解决。例如,因为序列已经确保对于给定层和前一层的读取将在请求对互锁存储器550的给定写入之前完成(在这个实施例中,对给定层的写入直到对整行的读取已经完成才被发起,以便找到最小值),所以对于重新布置的beta矩阵660,读后写冒险是不存在的。
图10示出了示出用于解决或防止数据冒险的方法1000的一个实施例的流程图。图10中所示的方法可以与本文公开的计算机系统、设备、电路、元件或组件中的任何计算机系统、设备、电路、元件或组件等结合使用。在各种实施例中,所示的方法元素(本文中也称为“框”)中的一些方法元素可以并发地执行、以与所示次序不同的次序执行、或者可以被省略。还可以根据期望执行附加的方法元素。流程开始于框1010。
在框1010处,维护用于线性化的beta矩阵的数组(addr[96])和互锁表的数组(interlock[96])。这些数组可以通过对beta矩阵660和互锁表900使用光栅(raster)扫描排序来生成。在一些实施例中,这些数组中的一个或两者被存储在互锁存储器550中。在其它实施例中,冒险电路系统以其它方式被配置为具有来自这些数组中的一个或两者的信息。在所示实施例中,重新布置的beta矩阵660可以被用作地址表,以生成用于接收到的存储器访问请求的地址。流程前进到框1020。
在框1020处,读和写指针被初始化为零。流程前进到框1030和1060。
在框1030处,接收读请求。流程前进到判定框1040。
在判定框1040处,确定写指针是否大于互锁表中在读指针的索引处(interlock[read pointer])的值。如果写指针较大,则流程前进到框1050。否则,流程返回到判定框1040(例如,互锁存储器550被配置为等待直至写指针大于在interlock[read pointer]处的值才准许读请求。
在框1050处,读取由beta矩阵中读指针的索引(addr[read pointer])处的位置指示的地点。因此,所请求的读操作被执行。流程返回到框1030。
在框1060处,接收写请求。流程前进到框1070。
在框1070处,用于写请求的数据被写入由beta矩阵中写指针的索引(addr[writepointer])处的位置指示的地点。因此,所请求的写操作被执行。在该实施例中,写指针递增(这可以允许一个或多个等待的读请求继续进行)。流程返回到框1060。
在其它实施例中,可以以与框1040中对于读取所利用的类似的方式来检查写入。在这些实施例中,互锁存储器550被配置为停滞给定的写入,直到读指针大于interlock[write pointer]。如上面所讨论的,由于在示例beta矩阵660中的写入的本质,所以在所示实施例中省略了这个框。在其它实施例中,可以包括这个框以用于写入,但是对于读取可以省略框1040,例如,对于其中数据流确保读取将不会造成冒险的程序,可以省略框1040。
生成互锁信息
图11示出了示出用于确定用于程序的存储器访问序列和/或地址的方法1100的一个实施例的流程图。图11中所示的方法可以与本文公开的计算机系统、设备、电路、元件或组件中的任何计算机系统、设备、电路、元件或组件等结合使用。在各种实施例中,所示的方法元素(或框)中的一些方法元素可以并发地执行、以与所示的次序不同的次序执行、或者可以被省略。还可以根据期望执行附加的方法元素。流程开始于框1110。
在框1110处,接收输入程序。该程序可以包括存储器访问操作,例如存储器读和/或写。在一些实施例中,编译器为包括互锁存储器550的系统接收供编译的程序。流程前进到框1120。
在框1120处,在输入程序的编译期间,通过执行输入程序的部分来生成信息。在编译期间用于执行输入程序的部分的示例性技术在于2012年8月23日提交的并且标题为“Compile Time Execution”的美国专利申请No.13/592,995中描述,该美国专利申请整体上通过引用并入本文。在一些实施例中,这些技术被用于生成用于对互锁存储器550进行编程的信息。流程前进到框1130。
在框1130处,基于该信息为输入程序中的存储器访问生成地址、序列和/或存储器访问约束。例如,在一些实施例中,编译器被配置为基于该信息为一个或多个互锁表生成一个或多个地址表(例如,beta矩阵)和存储器访问约束。在这些实施例中,编译器可以被配置为部分地执行输入程序,以便确定程序中存储器访问的次序、存储器访问的地址和/或存储器访问之间的冒险。在一些实施例中,地址信息被用于自寻址。在一些实施例中,用于互锁存储器550的冒险电路系统被配置为具有确定的存储器访问约束,并且被用于在执行输入程序时避免冒险。在一些实施例中,这种配置可以自动执行,例如在输入程序要被编译并且编程到特定硬件上时执行。在一些实施例中,编译器被配置为重新布置存储器操作序列,以便使用互锁存储器550来改进性能。在一些实施例中,重新布置可以更改程序的编译,以使用重新布置的序列。流程在框1130处结束。
在其它实施例中,作为编译时执行的代替和/或除了编译时执行之外,可以使用其它技术来生成互锁信息。例如,在一些实施例中,程序(例如,图形程序)可以允许用户输入对应于存储器访问的数组或矩阵,并且程序可以被配置为基于所输入的信息来生成(一个或多个)互锁表和/或地址表。例如,在一个实施例中,程序被配置为基于输入H矩阵来生成beta矩阵和一个或多个互锁表。在这些实施例中,可以完全在编译或执行相关联的输入程序之前生成互锁信息。在其它实施例中,与存储器访问集合相关联的各种程序、数组、矩阵或其它信息中的任何信息可以被输入到用于配置互锁存储器的程序。
在各种实施例中,信息(例如,互锁信息和/或(一个或多个)地址表)可以在各种适当的时间中的任何时间被传送到互锁存储器。例如,该信息可以在程序执行的开始或者在程序运行的时候被传送。在一些实施例中,序列和/或互锁信息可以在执行期间被更新,以适应变化的条件或改进一个或多个性能度量。示例性性能度量包括但不限于:吞吐量、延迟、功耗、可靠性、资源利用率和误比特率。
性能估计
在一些实施例中,程序(例如,图形程序)被配置为对用于输入程序或存储器访问操作序列的互锁存储器550运行周期准确模拟。在一些实施例中,周期准确模拟是基于对存储器操作序列和存储器访问的流水线化的本质的了解来实现或执行的。例如,可以为特定的访问序列确定停滞的次数和用于每次停滞的周期数。在一些实施例中,可以基于这样的模拟来生成性能估计。在一些实施例中,存储器访问序列可以基于性能估计被重新排序,以改进性能。
图12示出了示出用于基于性能建模来生成存储器访问操作的重新布置或重新排序的序列的方法的一个实施例的流程图。图12中所示的方法可以与本文公开的计算机系统、设备、电路、元件或组件中的任何计算机系统、设备、电路、元件或组件等结合使用。在各种实施例中,所示的方法元素中的一些方法元素可以并发地执行、以与所示的次序不同的次序执行、或者可以被省略。还可以根据期望执行附加的方法元素。流程开始于框1210。
在框1210处,确定性能估计。性能估计可以指示使用互锁存储器550执行存储器访问操作序列所需的估计的周期数。流程前进到判定框1220。
在判定框1220处,确定性能估计是否是可接受的。在一些实施例中,该确定基于是否已经执行了框1210-1230的特定数量的迭代。在一些实施例中,该确定基于期望的性能估计或某些其它阈值。在一些实施例中,最佳的排序可以是可接受的,而在其它实施例中,例如,基于某些启发式方法,次优的排序可以是可接受的。如果性能是可接受的,则流程前进到框1240并且流程结束。否则,流程前进到框1230。
在框1230处,存储器访问操作序列被重新布置或重新排序。上文参考图6A-6C讨论了这样的重新排序的一个示例。流程前进到框1210。在一些实施例中,重新布置的序列和/或性能估计被存储,并且基于性能估计选择重新布置的序列中的一个重新布置的序列。在一些实施例中,所选择的序列被用于编译程序和/或生成用于互锁存储器550的一个或多个互锁表。
图13示出了示出用于配置互锁存储器系统的方法的一个实施例的流程图。图13中所示的方法可以与本文公开的计算机系统、设备、电路、元件或组件中的任何计算机系统、设备、电路、元件或组件等结合使用。在各种实施例中,所示的方法元素中的一些方法元素可以并发地执行、以与所示的次序不同的次序执行、或者可以被省略。还可以根据期望执行附加的方法元素。流程开始于框1310。
在框1310处,确定用于程序的存储器访问序列。在一些实施例中,该序列是基于对输入程序的编译来确定的,例如按照上面所讨论的图11的方法的实施例。在一些实施例中,该序列可以被重新排序,以改进互锁存储器550的性能。流程前进到框1320。
在框1320处,基于存储器访问序列生成指定存储器访问约束的信息。在该实施例中,该信息可用于避免存储器访问序列的存储器访问冒险。在一些实施例中,该信息包括一个或多个互锁表。流程前进到框1330。
在框1330处,使用该信息来配置电路系统。在该实施例中,电路系统被包括在存储器中或耦接到存储器。在该实施例中,电路系统在配置之后是可操作的,以对存储器执行与存储器访问序列对应的存储器访问请求,同时避免存储器访问冒险。在该实施例中,电路系统被配置为避免存储器访问冒险,而无需接收指示存储器访问冒险的其它信息(例如,程序可以发送存储器访问请求序列以供流水线化的执行,而无需指示存储器访问冒险,并且在发送依赖的访问之前无需等待特定存储器访问完成)。在一些实施例中,配置是使用一个或多个可编程硬件元件执行的。在一些实施例中,配置是通过将值下载到被包括在互锁存储器550中和/或耦接到互锁存储器550的一个或多个存储元件(例如,一个或多个随机存取存储器(RAM)和/或一个或多个只读存储器(ROM))中来执行的。在一些实施例中,电路系统还被配置为具有用于使用各种适当技术中的任何技术对存储器访问进行自寻址的地址信息。在一些实施例中,基于到图形程序的各种输入来自动执行方法1300。流程在框1330处结束。
附加的互锁存储器实施例
图14示出了示出被配置为实现互锁存储器的系统1400的一个实施例的框图。图15A-B和图16A-B示出了在一些实施例中与系统1400相关联的示例性互锁表、执行时间线和方法。在所示实施例中,系统1400包括存储器1410和冒险电路系统1420。在一些实施例中,存储器1410是共享存储器。
在所示实施例中,冒险电路系统1420被配置为接收读和写请求以及确定何时准许它们,以便基于写互锁表1470和读互锁表1480来解决冒险。在一些实施例中,冒险电路系统1420被集成到包括存储器1410的存储器系统中。在所示实施例中,冒险电路系统1420包括写互锁表1470、读互锁表1480以及被配置为维持用于写指针1430、读指针1440、写令牌1450和读令牌1460的值的电路系统。在各种实施例中,冒险电路系统可以分布在流水线化的数据路径的元件之间。在一些实施例中,由写互锁表1470和读互锁表1480指定的信息可以不被直接存储,而是可以代替地被用于配置冒险电路系统,以执行下面描述的各种功能。
在所示实施例中,写令牌1450和读令牌1460指示假设令牌不递增,则在下一个冒险之前可以分别执行多少个读或写。例如,如果读令牌1460的值为3,则假设该值不会由于此期间的写而递增,那么在潜在的冒险之前可以执行三个读。
在所示实施例中,写指针1430和读指针1440指示在存储器访问序列中已经执行了多少个每种类型的操作。在一些实施例中,写指针1430和读指针1440在执行给定的程序之前被初始化为零,并且对于每个写和读分别递增。
在所示实施例中,写互锁表1470和读互锁表1480指示在特定的读或写操作完成时要添加到读令牌1460或写令牌1450的值。这些表可以使用编译时执行生成、基于用户输入生成、为特定数组或矩阵硬编码等。下面参考图15A-B讨论用于这些表的值的示例性实施例。
在所示实施例中,冒险电路系统1420被配置为向存储器1410提供写地址信号、写使能信号、读地址信号和读使能信号。在一些实施例中,冒险电路系统1420是自寻址的并且在存储器操作序列的执行期间不接收地址信息。在其它实施例中,地址被包括在读和写请求中。
图15A-B示出了用于使用系统1400的不同的示例性存储器访问操作序列的互锁表和流水线化的执行的示例性实施例。这些图示出重新布置存储器访问序列(例如,在所示实施例中,重新布置beta矩阵1510以产生beta矩阵1550)可以提高使用互锁存储器的存储器访问的流水线化的性能。
在所示实施例中,beta矩阵1510包括两层,其中每层包括三个块。在所示实施例中,使用阴影块示出每个表的第二层中的位置。在所示实施例中,通过对beta矩阵1510的第一层重新排序来生成Beta矩阵1550。
执行图示出了对于beta矩阵1510和1550中的每个beta矩阵的存储器访问的示例性流水线化执行。在所示实施例中,在完成对于层2的存储器访问后,执行再次对于层1开始。图15A-B示出了重新布置存储器访问操作的次序可以改进性能,因为用于生成beta矩阵1550的重新排序具有相对于beta矩阵1510的提高的吞吐量。
在所示实施例中,写互锁表1520和1560以及读互锁表1530和1570包括指示在完成beta矩阵中的一个beta矩阵中的对应操作后要添加的令牌数的条目。例如,在完成对beta矩阵1510的层1的地点0的写入后,添加两个读令牌,从而允许在用于避免下一个潜在的冒险的停滞之前发生至少两个读。作为另一个示例,在完成对beta矩阵1510的层2的地点4的写入后,添加四个读令牌,从而允许在用于避免下一个冒险的停滞之前发生至少四个读。在所示实施例中,每个读操作添加单个写令牌。应当指出,在所示实施例中,写入不在添加令牌之后立即发生。在该实施例中,这是LDPC解码操作的本质的结果,在LDPC解码操作中程序被配置为在写入层中的位置中的任何位置之前读取该层中的所有位置。因此,在该示例中,当接收到第一写请求时,基于三个读,写令牌值已经递增为三。
图16A-B示出了用于互锁存储器系统(诸如例如,系统1400的实施例)的操作的方法1600和1650的示例性实施例。图16A-B中所示的方法可以与本文公开的计算机系统、设备、电路、元件或组件中的任何计算机系统、设备、电路、元件或组件等结合使用。在各种实施例中,所示的方法元素中的一些方法元素可以并发地执行、以与所示的次序不同的次序执行、或者可以被省略。还可以根据期望执行附加的方法元素。流程对于图16A开始于框1602并且对于图16B开始于框1652。在一些实施例中,(至少部分地)并行执行这些方法。
参考图16A,在框1602处,冒险电路系统初始化读令牌值。在图15A-B的实施例中,读令牌被初始化为值三,而写令牌被初始化为值零。流程前进到框1604。
在框1604处,冒险电路系统1420等待读请求。流程前进到判定框1606。
在判定框1606处,冒险电路系统1420确定读令牌是否大于零。如果它大于零,则流程前进到框1608。否则,流程保持在判定框1606,直到读令牌大于零为止。如图16B中来自框1666的虚线箭头所示,响应于写操作,读令牌可以变得大于零,例如,因为写操作的执行去除了冒险。
在框1608处,冒险电路系统1420基于读指针从读互锁表1470提取令牌值。在自寻址实施例中,冒险电路系统1420还被配置为从地址表检索读地址。应当指出,在一些实施例中,互锁表可以被配置为存储地址以及指示存储器约束。在这些实施例中,除了互锁信息之外,还可以从互锁表检索地址。流程前进到框1610。
在框1610处,冒险电路系统1420使读指针递增。流程前进到框1612。
在框1612处,冒险电路系统1420使读令牌递减。在该实施例中,每个读可以被认为是消耗读令牌,以使得仅当读令牌可用时才允许发生读取。流程前进到框1614。
在框1614处,冒险电路系统1420执行所请求的读操作。流程前进到框1616。
在框1616处,冒险电路系统1420将从框1608检索出的令牌值添加到写令牌。如由图16B的从框1616到判定框1656的虚线所示,因为在框1614中读取的执行可以去除冒险,所以这种递增可以允许等待的写入继续进行。流程返回到框1604。
参考图16B,在框1652处,冒险电路系统1420初始化写令牌值。流程前进到框1654。
在框1654处,冒险电路系统1420等待写请求。流程前进到判定框1656。
在判定框1656处,冒险电路系统1420确定写令牌是否大于零。如果它大于零,则流程前进到框1658。否则,流程保留在判定框1656处,直到写令牌大于零为止。
在框1658处,冒险电路系统1420基于写指针从写互锁表1480提取令牌值。在自寻址实施例中,冒险电路系统1420还被配置为从地址表检索写地址。流程前进到框1660。
在框1660处,冒险电路系统1420使写指针递增。流程前进到框1662。
在框1662处,冒险电路系统1420使写令牌递减。在该实施例中,每个写可以被认为是消耗写令牌,以使得仅当写令牌可用时才允许发生写入。流程前进到框1664。
在框1664处,冒险电路系统1420执行所请求的写操作。流程前进到框1666。
在框1666处,冒险电路系统1420将从框1608检索出的令牌值添加到读令牌。如由图16A的从框1666到判定框1606的虚线所示,这种递增可以允许等待的读取继续进行,因为在框1654中写入的执行可以去除冒险。流程返回到框1654。
应当指出,图14-16B示出了用于互锁表的示例性的基于令牌的技术,而图9示出了示例性的基于计数器的技术(例如,互锁表900中的每个条目指示在给定访问被允许继续进行之前必须发生的存储器操作的计数或个数)。在其它实施例中,可以使用各种其它技术来使用互锁表指示冒险以及基于互锁表停滞存储器访问的执行。本文出于示例性目的而提供所公开的实施例,并且所公开的实施例不旨在限制其它实施例中的互锁表实现。
在一些实施例中,互锁存储器系统可以被配置为具有用于多个不同程序的存储器访问约束的集合。在这些实施例中,不同程序中的一个不同程序的指示可以被发送到互锁存储器系统,并且对应的存储器访问约束可以被用于处理针对给定程序的存储器访问请求。在各种可编程实施例中,被配置为具有用于第一程序的第一存储器访问约束集合的电路系统可以被重新配置为具有用于第二程序的不同的第二存储器访问约束集合。
可重新配置的电路系统在各种应用中可以是有利的。例如,包括可重新配置的互锁电路系统的用户装备设备(UE)可以接收用于LDPC支持的通信的新H矩阵或beta矩阵。在这些实施例中,UE可以被配置为基于接收到的矩阵来生成用于实现LDPC解码的程序。在其它实施例中,程序可以被直接传送到UE。在这些实施例中,UE可以被配置为将对应于矩阵的存储器访问重新排序,以便降低流水线化执行时间。在这些实施例中,UE被配置为将冒险电路系统配置为具有用于通信的新的存储器访问约束集合。在一些实施例中,UE被配置为接收用于程序的存储器访问约束集合,而不是在内部生成它们。在各种实施例中,UE可以使用该程序和被配置为具有存储器访问约束的互锁存储器来解码传入的无线传输。在一些实施例中,包括被配置为存储用于多个程序的存储器访问约束的互锁存储器的UE可以被配置为(例如当设备经由不同的网络进行通信时)对于不同的通信使用不同的奇偶校验技术。
现在参考图17,示出了用于操作互锁存储器的方法的一个概括性实施例1700。图17中所示的方法可以与本文公开的计算机系统、设备、电路、元件或组件中的任何计算机系统、设备、电路、元件或组件等结合使用。在各种实施例中,所示的方法元素中的一些方法元素可以并发地执行、以与所示的次序不同的次序执行、或者可以被省略。还可以根据期望执行附加的方法元素。流程开始于框1710。
在框1710处,接收针对存储器的存储器访问请求序列。在一些实施例中,程序的执行生成存储器访问请求序列。流程前进到框1720。
在框1720处,存储器访问请求由被配置为具有用于该存储器访问请求的存储器访问约束的电路系统准许。在该实施例中,电路系统被配置为以存储器访问约束为依据来准许存储器访问请求,由此避免与存储器访问请求序列对应的存储器访问序列的存储器访问冒险。电路系统可以包括被配置为存储指定存储器访问约束的信息的一个或多个存储元件。电路系统可以是可编程的,以基于存储器访问约束来准许存储器访问请求(例如,电路系统可以包括可编程硬件元件)。电路系统可以专用于基于存储器访问约束来准许存储器访问请求(例如,电路系统可以是ASIC)。流程在框1720处结束。
现在参考图18,示出了用于将存储器访问序列重新排序的方法的一个概括性实施例1800。图18中所示的方法可以与本文公开的计算机系统、设备、电路、元件或组件中的任何计算机系统、设备、电路、元件或组件等结合使用。在各种实施例中,所示的方法元素中的一些方法元素可以并发地执行、以与所示的次序不同的次序执行、或者可以被省略。还可以根据期望执行附加的方法元素。流程开始于框1810。
在框1810处,存储指定的存储器访问序列。该指定的序列可以从另一个计算系统接收或者由存储该序列的计算系统例如使用编译时执行生成。在该实施例中,指定的序列对应于要执行的功能(诸如例如LDPC解码)并且具有第一存储器访问约束。流程前进到框1820。
在框1820处,指定的序列被重新排序,以创建具有不同的第二存储器访问约束的重新排序的存储器访问序列。在该实施例中,重新排序的存储器访问序列可用于访问存储器以执行功能。重新排序可以改进使用互锁存储器的存储器访问的性能,如上面参考图6C和图12所讨论的。可以多次执行重新排序,并且可以基于一个或多个标准来选择特定的重新排序的序列。重新排序的存储器访问序列可以具有比原始存储器访问序列高的存储器访问效率。例如,重新排序的序列可用于在比被用于使用原始序列执行功能的时钟周期数少的时钟周期数中执行功能。流程在框1820处结束。
在一些实施例中,计算系统可以编译程序,以实现重新排序的存储器访问序列。程序的执行可以生成与重新排序的存储器访问序列对应的存储器访问请求序列。可以使用互锁存储器来执行存储器访问请求。
现在参考图19,示出了用于操作自寻址存储器的方法的一个概括性实施例1900。图19中所示的方法可以与本文公开的计算机系统、设备、电路、元件或组件中的任何计算机系统、设备、电路、元件或组件等结合使用。在各种实施例中,所示的方法元素中的一些方法元素可以并发地执行、以与所示的次序不同的次序执行、或者可以被省略。还可以根据期望执行附加的方法元素。流程开始于框1910。
在框1910处,接收与指定存储器访问序列对应的存储器访问请求,但是存储器访问请求不包括地址信息。例如,存储器访问请求可以由LDPC解码器程序生成。请求可以指定是否期望读或写操作,但是不指定要读取/写入的地点。流程前进到框1920。
在框1920处,地址被指派给用于指定存储器访问序列的存储器访问请求。这可以由被配置为具有用于指定存储器访问序列的地址信息的寻址电路系统执行。寻址电路系统可以是可编程的或可以专用于特定序列。流程前进到框1930。
在框1930处,使用指派的地址来执行存储器访问序列。流程在框1930处结束。
现在参考图20,示出了用于对称矩阵2010的Cholesky因子分解的存储器访问序列2020。在所示实施例中,对称矩阵2010被划分为2×2个子矩阵块B0-B3。序列2020捕获对于这些子矩阵块的Choleskey因子分解算法的读/修改/写序列。在所示实施例中,对于第二行,例如,在前进到行三之前,B2和B0被读取,潜在地被修改并且写入。在其它实施例中,可以为各种矩阵操作中的任何矩阵操作确定类似的序列。在一些实施例中,本文描述的各种技术可以被用于这样的序列。例如,可以为序列2020生成互锁信息,序列2020可以被重新布置以减少存储器访问冒险,可以为序列2020生成地址,等等。
本文的各种实施例是参考非暂态计算机可读介质来描述的,该非暂态计算机可读介质具有存储在其上的指令,其中这些指令可由计算设备执行,以执行各种操作。在各种实施例中,计算机程序可以具有用于执行任何这样的操作的指令,而系统可以基于计算机程序中指令的执行使得操作被执行。
以下编号的段落描述了关于避免存储器访问冒险的附加实施例。
1.一种系统,包括:
用于接收针对存储器的存储器访问请求序列的装置,其中存储器访问请求序列被配置为访问与矩阵中的条目相关联的地点,其中用于接收存储器访问请求序列的装置被配置为具有用于该存储器访问请求序列的存储器访问约束;以及
用于以存储器访问约束为依据来准许存储器访问请求序列,由此避免与存储器访问请求序列对应的存储器访问序列的存储器访问冒险的装置。
2.如实施例1所述的系统,还包括:
流水线装置,用于使存储器访问序列的执行流水线化;
其中用于准许存储器访问请求序列的装置被配置为基于存储器访问约束来停滞存储器访问请求序列的流水线化的执行。
3.一种具有用于执行操作的指令的计算机程序,所述操作包括:
接收针对存储器的存储器访问请求序列,其中第一电路系统被配置为具有用于该存储器访问请求序列的存储器访问约束;以及
以存储器访问约束为依据来准许存储器访问请求,由此避免与存储器访问请求序列对应的存储器访问序列的存储器访问冒险。
4.如实施例3所述的计算机程序,其中以存储器访问约束为依据来准许存储器访问请求包括基于存储器访问约束来停滞存储器访问序列的流水线化的执行。
5.如实施例3所述的计算机程序,其中操作还包括:
维护用于对存储器的读访问的读计数器和用于对存储器的写访问的写计数器;
其中以存储器访问约束为依据来准许存储器访问请求是基于读计数器和写计数器的。
6.如实施例3所述的计算机程序,其中存储器访问约束指示在执行特定的写操作之前必须为存储器访问序列获得的读指针值。
7.如实施例3所述的计算机程序,其中操作还包括使用可编程电路系统实现存储器访问约束。
以下编号的段落描述了关于具有存储器访问约束的配置电路的附加实施例。
1.一种方法,包括:
由计算系统为程序确定存储器访问序列;
由计算系统基于存储器访问序列来生成指定存储器访问约束的信息,其中该信息可用于避免存储器访问序列的存储器访问冒险;以及
由计算系统使用该信息配置第一电路系统,其中第一电路系统被包括在存储器中或耦接到存储器,其中在所述配置之后,第一电路系统可操作以对存储器执行与存储器访问序列对应的存储器访问请求,同时避免存储器访问冒险,其中第一电路系统被配置为避免存储器访问冒险被实现,而无需接收指示存储器访问冒险的其它信息。
2.如实施例1所述的方法,其中存储器访问序列包括对于由稀疏矩阵的不同行指示的地点的读、修改和写操作,其中对于第一行的地点的读、修改和写操作要在对于第二行的该地点的读操作之前完成。
3.如实施例1所述的方法,其中存储器访问序列基于低密度奇偶校验(LDPC)矩阵。
4.如实施例3所述的方法,其中计算系统是移动设备,所述方法还包括:
由移动设备接收更新后的LDPC矩阵,其中确定、生成和配置是基于更新后的LDPC矩阵来执行的。
5.如实施例4所述的方法,还包括:
基于LDPC矩阵来生成程序;以及
使用该程序来解码传入的无线传输。
6.如实施例1所述的方法,还包括:
将电路系统配置为具有对应于不同程序的多个存储器访问约束集合。
7.如实施例1所述的方法,其中配置是使用一个或多个可编程硬件元件来执行的。
8.如实施例1所述的方法,其中配置是通过将信息传送到表来执行的。
9.如实施例1所述的方法,其中确定是通过编译包括存储器访问序列的输入程序来执行的。
10.如实施例9所述的方法,其中编译包括执行输入程序的部分,以确定存储器访问序列和存储器访问约束。
11.如实施例1所述的方法,其中存储器访问约束指示以下项中的一个或多个:
在执行写操作之前必须发生的读操作的数量;
在执行读操作之前必须发生的写操作的数量;或者
用于存储器访问序列中的特定存储器访问操作的令牌值,其中令牌值指示基于特定存储器访问操作的执行将允许的后续读或写操作的数量。
12.一种系统,包括:
一个或多个处理器;以及
一个或多个存储器,该一个或多个存储器具有存储在其上的可由该一个或多个处理器执行的程序指令,以使得系统执行操作,这些操作包括:
为程序确定存储器访问序列;
基于存储器访问序列生成指定存储器访问约束的信息,其中该存储器访问约束可用于避免该存储器访问序列的存储器访问冒险;以及
使用该信息配置第一电路系统,其中第一电路系统被包括在存储器中或耦接到存储器,其中在所述配置之后,第一电路系统可操作以对存储器执行与存储器访问序列对应的存储器访问请求,同时避免存储器访问冒险,其中第一电路系统被配置为避免存储器访问冒险被实现,而无需接收指示存储器访问冒险的其它信息。
13.如实施例12所述的系统,其中存储器访问序列包括对于由稀疏矩阵的不同行指示的地点的读、修改和写操作,其中对于第一行的地点的读、修改和写操作要在对于第二行的该地点的读操作之前完成。
14.如实施例12所述的系统,其中系统是移动设备,其中存储器访问序列是针对用于移动设备的无线通信的低密度奇偶校验矩阵的,其中操作还包括:由移动设备接收更新后的LDPC矩阵,其中确定、生成和配置是基于更新后的LDPC矩阵来执行的。
15.如实施例12所述的系统,还包括:
一个或多个可编程硬件元件,其中配置是使用该一个或多个可编程硬件元件来执行的。
16.如实施例12所述的系统,其中确定是通过编译包括存储器访问序列的输入程序来执行的。
17.如实施例16所述的系统,其中编译包括执行输入程序的部分,以确定存储器访问序列和存储器访问约束。
18.一种具有存储在其上的指令的非暂态计算机可读介质,其中该指令可由计算设备执行以执行操作,这些操作包括:
为程序确定存储器访问序列;
基于存储器访问序列生成指定存储器访问约束的信息,其中该存储器访问约束可用于避免该存储器访问序列的存储器访问冒险;以及
使用该信息配置第一电路系统,其中第一电路系统被包括在存储器中或耦接到存储器,其中在所述配置之后,第一电路系统可操作以对存储器执行与存储器访问序列对应的存储器访问请求,同时避免存储器访问冒险,其中第一电路系统被配置为避免存储器访问冒险被实现,而无需接收指示存储器访问冒险的其它信息。
19.如实施例18所述的非暂态计算机可读介质,其中确定是通过编译包括存储器访问序列的输入程序来执行的,其中编译包括执行输入程序的部分,以确定存储器访问序列和存储器访问约束。
20.如实施例18所述的非暂态计算机可读介质,其中存储器访问约束指示以下项中的一个或多个:
在执行写操作之前必须发生的读操作的数量;
在执行读操作之前必须发生的写操作的数量;或者
用于存储器访问序列中的特定存储器访问操作的令牌值,其中令牌值指示基于特定存储器访问操作的执行将允许的后续读或写操作的数量。
21.一种系统,包括:
用于为程序确定存储器访问序列的装置;
用于基于存储器访问序列生成指定存储器访问约束的信息的装置,其中该存储器访问约束可用于避免该存储器访问序列的存储器访问冒险;以及
用于使用该信息配置第一电路系统的装置,其中第一电路系统被包括在存储器中或耦接到存储器,其中在所述配置之后,第一电路系统可操作以对存储器执行与存储器访问序列对应的存储器访问请求,同时避免存储器访问冒险,其中第一电路系统被配置为避免存储器访问冒险被实现,而无需接收指示存储器访问冒险的其它信息。
22.一种具有用于执行操作的指令的计算机程序,所述操作包括:
为程序确定存储器访问序列;
基于存储器访问序列生成指定存储器访问约束的信息,其中该信息可用于避免该存储器访问序列的存储器访问冒险;以及
使用该信息配置第一电路系统,其中第一电路系统被包括在存储器中或耦接到存储器,其中在所述配置之后,第一电路系统可操作以对存储器执行与存储器访问序列对应的存储器访问请求,同时避免存储器访问冒险,其中第一电路系统被配置为避免存储器访问冒险被实现,而无需接收指示存储器访问冒险的其它信息。
23.如实施例22所述的计算机程序,其中存储器访问序列包括对于由稀疏矩阵的不同行指示的地点的读、修改和写操作,其中对于第一行的地点的读、修改和写操作要在对于第二行的该位置的读操作之前完成。
24.如实施例22所述的计算机程序,其中存储器访问序列基于低密度奇偶校验(LDPC)矩阵。
25.如实施例22所述的计算机程序,其中存储器访问约束指示以下项中的一个或多个:
在执行写操作之前必须发生的读操作的数量;
在执行读操作之前必须发生的写操作的数量;或者
用于存储器访问序列中的特定存储器访问操作的令牌值,其中令牌值指示基于特定存储器访问操作的执行将允许的后续读或写操作的数量。
以下编号的段落描述了关于将存储器访问序列重新排序以改进流水线化的执行的附加实施例:
1.一种方法,包括:
由计算系统存储指定的存储器访问序列,其中指定的序列对应于要执行的功能,其中指定的存储器访问序列具有第一存储器访问约束;以及
由计算系统将指定的存储器访问序列重新排序,以创建重新排序的存储器访问序列,其中重新排序的存储器访问序列具有第二存储器访问约束,其中第二存储器访问约束与第一存储器访问约束不同;
其中重新排序的存储器访问序列可用于访问存储器以执行功能。
2.如实施例1所述的方法,还包括:
为多个重新排序的存储器访问序列确定性能估计,其中该多个重新排序的存储器访问序列基于指定的存储器访问序列并且可用于访问存储器以执行功能;以及
基于性能估计来选择该多个重新排序的序列中的一个重新排序的序列。
3.如实施例2所述的方法,
其中性能估计基于用于该多个重新排序的存储器访问序列中的每一个的存储器访问约束;以及
其中性能估计是基于针对使用冒险电路系统的存储器访问的流水线化的执行的重新排序的存储器访问序列的周期准确模拟来确定的。
4.如实施例1所述的方法,还包括:
根据第二存储器访问约束来配置耦接到存储器或被包括在存储器中的第一电路系统,其中所述配置配置第一电路系统以实现第二存储器访问约束。
5.如实施例4所述的方法,还包括:
执行程序,以生成与重新排序的存储器访问序列对应的存储器访问请求序列;以及
由第一电路系统根据第二存储器访问约束来准许存储器访问请求序列,由此避免存储器访问请求序列的存储器冒险。
6.如实施例1所述的方法,还包括:
编译程序,以实现重新排序的存储器访问序列。
7.如实施例1所述的方法,
其中指定的存储器访问序列具有第一存储器访问效率;以及
其中重新排序的存储器访问序列具有更高的第二存储器访问效率。
8.如实施例1所述的方法,其中指定的存储器访问序列基于奇偶校验矩阵。
9.一种系统,包括:
一个或多个处理器;以及
一个或多个存储器,该一个或多个存储器具有存储在其上的程序指令,该程序指令可由该一个或多个处理器执行以执行操作,这些操作包括:
存储指定的存储器访问序列,其中指定的序列对应于要执行的功能,其中指定的存储器访问序列具有第一存储器访问约束;
以及
将指定的存储器访问序列重新排序,以创建重新排序的存储器访问序列,其中重新排序的存储器访问序列具有第二存储器访问约束,其中第二存储器访问约束与第一存储器访问约束不同;
其中重新排序的存储器访问序列可用于访问存储器,以执行功能。
10.如实施例9所述的系统,其中操作还包括:
为多个重新排序的存储器访问序列确定性能估计,其中该多个重新排序的存储器访问序列基于指定的存储器访问序列并且可用于访问存储器以执行功能;以及
基于性能估计来选择该多个重新排序的序列中的一个重新排序的序列。
11.如实施例9所述的系统,其中操作还包括:
根据第二存储器访问约束来配置耦接到存储器或被包括在存储器中的第一电路系统,其中所述配置配置第一电路系统以实现用于重新排序的存储器访问序列的第二存储器访问约束。
12.如实施例11所述的系统,其中操作还包括:
生成与重新排序的存储器访问序列对应的存储器访问请求序列;以及
由第一电路系统根据第二存储器访问约束来准许存储器访问请求序列,由此避免存储器访问请求序列的存储器冒险。
13.如实施例9所述的系统,其中操作还包括:
编译程序,以实现重新排序的存储器访问序列。
14.如实施例9所述的系统,其中操作还包括:
使用输入程序的编译时执行来确定指定的存储器访问序列。
15.如实施例9所述的系统,
其中指定的存储器访问序列具有第一存储器访问效率;以及
其中重新排序的存储器访问序列具有更高的第二存储器访问效率。
16.如实施例9所述的系统,其中指定的存储器访问序列对应于beta矩阵中的条目,其中beta矩阵是基于奇偶校验矩阵生成的。
17.一种具有存储在其上的指令的非暂态计算机可读介质,其中该指令可由计算设备执行以执行操作,这些操作包括:
存储指定的存储器访问序列,其中指定的序列对应于要执行的功能,其中指定的存储器访问序列具有第一存储器访问约束;以及
将指定的存储器访问序列重新排序,以创建重新排序的存储器访问序列,其中重新排序的存储器访问序列具有第二存储器访问约束,其中第二存储器访问约束与第一存储器访问约束不同;
其中重新排序的存储器访问序列可用于访问存储器以执行功能。
18.如实施例17所述的非暂态计算机可读介质,其中操作还包括:
将指定的存储器访问序列重新排序,以创建一个或多个附加的、不同的重新排序的存储器访问序列;
为重新排序的存储器访问序列和该一个或多个附加的、不同的重新排序的存储器访问序列确定性能估计,其中性能估计基于用于重新排序的序列和该一个或多个不同的、重新排序的序列的存储器访问约束;以及
基于性能估计来选择重新排序的序列和该一个或多个附加的、不同的重新排序的序列中的一个序列。
19.如实施例17所述的非暂态计算机可读介质,其中操作还包括:
根据第二存储器访问约束来配置被耦接到存储器或被包括在存储器中的第一电路系统,其中所述配置配置第一电路系统以实现用于重新排序的存储器访问序列的第二存储器访问约束。
20.如实施例17所述的非暂态计算机可读介质,其中操作还包括:
使用输入程序的编译时执行来确定指定的存储器访问序列。
21.一种系统,包括:
用于存储指定的存储器访问序列的装置,其中指定的序列对应于要执行的功能,其中指定的存储器访问序列具有第一存储器访问约束;以及
用于将指定的存储器访问序列重新排序,以创建重新排序的存储器访问序列的装置,其中重新排序的存储器访问序列具有第二存储器访问约束,其中第二存储器访问约束与第一存储器访问约束不同;
其中重新排序的存储器访问序列可用于访问存储器以执行功能。
22.如实施例21所述的系统,还包括:
用于为多个重新排序的存储器访问序列确定性能估计的装置,其中该多个重新排序的存储器访问序列基于指定的存储器访问序列并且可用于访问存储器以执行功能;以及
用于基于性能估计来选择该多个重新排序的序列中的一个重新排序的序列的装置。
23.如实施例21所述的系统,还包括:
用于根据第二存储器访问约束来配置被耦接到存储器或被包括在存储器中的第一电路系统的装置,其中所述配置配置第一电路系统以实现用于重新排序的存储器访问序列的第二存储器访问约束。
24.如实施例21所述的系统,还包括:
用于生成与重新排序的存储器访问序列对应的存储器访问请求序列的装置;以及
用于由第一电路系统根据第二存储器访问约束来准许存储器访问请求序列,由此避免存储器访问请求序列的存储器冒险的装置。
25.如实施例21所述的系统,还包括:
用于使用输入程序的编译时执行来确定指定的存储器访问序列的装置。
26.一种具有用于执行操作的指令的计算机程序,所述操作包括:
存储指定的存储器访问序列,其中指定的序列对应于要执行的功能,其中指定的存储器访问序列具有第一存储器访问约束;以及
将指定的存储器访问序列重新排序,以创建重新排序的存储器访问序列,其中重新排序的存储器访问序列具有第二存储器访问约束,其中第二存储器访问约束与第一存储器访问约束不同;
其中重新排序的存储器访问序列可用于访问存储器,以执行功能。
27.如实施例26所述的计算机程序,其中操作还包括:
将指定的存储器访问序列重新排序,以创建一个或多个附加的、不同的重新排序的存储器访问序列;
为重新排序的存储器访问序列和该一个或多个附加的、不同的重新排序的存储器访问序列确定性能估计,其中性能估计基于用于重新排序的序列和该一个或多个不同的、重新排序的序列的存储器访问约束;以及
基于性能估计来选择重新排序的序列和该一个或多个附加的、不同的重新排序的序列中的一个序列。
28.如实施例26所述的计算机程序,其中操作还包括:
根据第二存储器访问约束来配置被耦接到存储器或被包括在存储器中的第一电路系统,其中所述配置配置第一电路系统以实现用于重新排序的存储器访问序列的第二存储器访问约束;以及
使用输入程序的编译时执行来确定指定的存储器访问序列。
以下编号的段落描述了关于自寻址存储器的附加实施例:
1.一种装置,包括:
存储器;以及
寻址电路系统,该寻址电路系统被耦接到存储器或被包括在存储器中,其中该寻址电路系统被配置为:
接收与指定的存储器访问序列对应的存储器访问请求,其中存储器访问请求不包括地址信息;以及
向针对指定的存储器访问序列的存储器访问请求指派地址。
2.如实施例1所述的装置,其中寻址电路系统还被配置为:
存储用于指定的存储器访问序列的地址,其中所存储的地址在程序的编译期间生成,其中经编译的程序的执行生成存储器访问请求。
3.如实施例1所述的装置,其中寻址电路系统是可编程的以向针对第二指定的存储器访问序列的存储器访问请求指派地址。
4.如实施例1所述的装置,其中寻址电路系统还被配置为:
维护用于对存储器的读访问的读计数器和用于对存储器的写访问的写计数器;以及
基于读计数器和写计数器来指派地址。
5.如实施例1所述的装置,其中寻址电路系统被配置为具有用于与多个不同程序对应的存储器访问请求序列的地址。
6.如实施例1所述的装置,其中指定的存储器访问序列基于用于低密度奇偶校验(LDPC)解码器的奇偶校验矩阵。
7.如实施例1所述的装置,其中存储器是多端口的,并且被配置为在给定周期中发起多个存储器访问。
8.如实施例1所述的装置,还包括电路系统,该电路系统被配置为基于存储器访问序列中即将到来的存储器访问地址来执行高速缓存、预取或数据转发中的一个或多个。
9.一种方法,包括:
由寻址电路系统接收与指定的存储器访问序列对应的存储器访问请求,其中存储器访问请求不包括地址信息;
由寻址电路系统向针对指定的存储器访问序列的存储器访问请求指派地址;以及
由存储器使用指派的地址来执行存储器访问序列。
10.如实施例9所述的方法,还包括:
存储用于指定的存储器访问序列的地址,其中所存储的地址在程序的编译期间生成,其中经编译的程序的执行生成存储器访问请求。
11.如实施例9所述的方法,还包括:
使用指定用于第二存储器访问序列的地址的信息来配置寻址电路系统。
12.如实施例9所述的方法,还包括:
由寻址电路系统维护用于对存储器的读访问的读计数器和用于对存储器的写访问的写计数器;
其中该指派基于读计数器和写计数器。
13.如实施例9所述的方法,还包括:
由寻址电路系统将地址指派给针对与不同程序对应的多个指定的存储器访问序列的存储器访问请求。
14.如实施例9所述的方法,其中指定的存储器访问序列基于用于低密度奇偶校验(LDPC)解码器的奇偶校验矩阵。
15.一种方法,包括:
由计算系统为程序确定存储器访问序列;
由计算系统生成指定用于该存储器访问序列的地址的信息;以及
由计算系统使用该信息配置寻址电路系统,其中该寻址电路系统被包括在存储器中或耦接到存储器,其中在所述配置之后,寻址电路系统可操作以将地址指派给与存储器访问序列对应的存储器访问请求,其中存储器访问请求不包括地址信息。
16.如实施例15所述的方法,其中配置是使用一个或多个可编程硬件元件来执行的。
17.如实施例15所述的方法,其中配置是通过将信息传送到表来执行的。
18.如实施例15所述的方法,其中确定是通过编译包括存储器访问序列的输入程序来执行的。
19.如实施例18所述的方法,其中编译包括执行输入程序的部分,以确定存储器访问序列。
20.如实施例15所述的方法,其中确定基于用于低密度奇偶校验(LDPC)解码器的奇偶校验矩阵。
21.一种系统,包括:
用于接收与指定的存储器访问序列对应的存储器访问请求的装置,其中存储器访问请求不包括地址信息;以及
用于将地址指派给针对指定的存储器访问序列的存储器访问请求的装置。
22.如实施例21所述的系统,还包括:
用于存储用于指定的存储器访问序列的地址的装置,其中所存储的地址在程序的编译期间生成,其中经编译的程序的执行生成存储器访问请求。
23.如实施例21所述的系统,还包括:
用于维护用于对存储器的读访问的读计数器和用于对存储器的写访问的写计数器的装置;以及
用于基于读计数器和写计数器来指派地址的装置。
24.如实施例21所述的系统,还包括:
用于基于存储器访问序列中即将到来的存储器访问地址来执行高速缓存、预取或数据转发中的一个或多个的装置。
25.一种具有用于执行操作的指令的计算机程序,所述操作包括:
为程序确定存储器访问序列;
生成指定用于存储器访问序列的地址的信息;以及
使用该信息来配置寻址电路系统,其中寻址电路系统被包括在存储器中或耦接到存储器,其中在所述配置之后,寻址电路系统可操作以将地址指派给与存储器访问序列对应的存储器访问请求,其中存储器访问请求不包括地址信息。
26.如实施例25所述的计算机程序,
其中配置是使用一个或多个可编程硬件元件来执行的;
其中配置是通过将信息传送到表来执行的;
其中确定是通过编译包括存储器访问序列的输入程序来执行的;或者
其中确定是基于用于低密度奇偶校验(LDPC)解码器的奇偶校验矩阵的。
***
虽然已经相当详细地描述了上面的实施例,但是一旦完全理解了上述公开内容,则许多变化和修改将对本领域技术人员变得显而易见。旨在将以下权利要求解释为包括所有这样的变化和修改。

Claims (20)

1.一种装置,包括:
存储器;以及
第一电路系统,所述第一电路系统被耦接到所述存储器或被包括在所述存储器中并且被配置为:
接收针对所述存储器的存储器访问请求序列,其中所述存储器访问请求序列被配置为访问与矩阵中的条目关联的地点,其中所述第一电路系统被配置为具有用于所述存储器访问请求序列的存储器访问约束;以及
以所述存储器访问约束为依据来准许所述存储器访问请求序列,由此避免与所述存储器访问请求序列对应的存储器访问序列的存储器访问冒险。
2.如权利要求1所述的装置,
其中所述装置包括被配置为将所述存储器访问序列的执行流水线化的流水线电路系统;以及
其中所述第一电路系统被配置为基于所述存储器访问约束来停滞所述存储器访问请求序列的流水线化的执行。
3.如权利要求1所述的装置,其中所述第一电路系统还被配置为:
维护用于对所述存储器的读访问的读计数器和用于对所述存储器的写访问的写计数器;以及
基于所述读计数器和所述写计数器来准许所述存储器访问请求。
4.如权利要求1所述的装置,其中所述存储器访问约束为特定的存储器访问操作基于所述特定存储器访问操作的执行来指定所述存储器访问请求序列中要准许的后续读或写操作的数量。
5.如权利要求1所述的装置,其中所述存储器访问序列包括对于由稀疏矩阵的不同行指示的地点的读、修改和写操作,其中对于第一行的地点的读、修改和写操作要在对于第二行的所述地点的读操作之前完成。
6.如权利要求1所述的装置,其中所述第一电路系统包括被配置为存储指示所述存储器访问约束的信息的一个或多个表。
7.如权利要求1所述的装置,其中所述第一电路系统包括在存储器访问流水线的流水线阶段之间分布的电路系统,其中所述电路系统被编程为实行所述存储器访问约束。
8.如权利要求1所述的装置,其中所述存储器是多端口存储器,所述多端口存储器被配置为在同一周期中开始多个读请求和/或多个写请求的执行。
9.一种方法,包括:
由被耦接到存储器或被包括在存储器中的第一电路系统接收针对所述存储器的存储器访问请求序列,其中所述第一电路系统被配置为具有用于所述存储器访问请求序列的存储器访问约束;以及
由所述第一电路系统以所述存储器访问约束为依据来准许所述存储器访问请求,由此避免与所述存储器访问请求序列对应的存储器访问序列的存储器访问冒险。
10.如权利要求9所述的方法,其中以所述存储器访问约束为依据来准许所述存储器访问请求包括基于所述存储器访问约束来停滞所述存储器访问序列的流水线化的执行。
11.如权利要求9所述的方法,还包括:
维护用于对所述存储器的读访问的读计数器和用于对所述存储器的写访问的写计数器;
其中以所述存储器访问约束为依据来准许所述存储器访问请求基于所述读计数器和所述写计数器。
12.如权利要求11所述的方法,其中所述存储器访问约束指示在执行特定的写操作之前必须为所述存储器访问序列获得的读指针值。
13.如权利要求11所述的方法,其中所述存储器访问约束指示在执行特定的读操作之前必须为所述存储器访问序列获得的写指针值。
14.如权利要求9所述的方法,其中所述存储器访问约束基于特定存储器访问操作的执行来为所述特定存储器访问操作指定在不停滞的情况下在所述存储器访问请求序列中将允许的后续读操作或写操作的数量。
15.如权利要求9所述的方法,其中所述存储器访问序列包括对于矩阵的不同行的读/修改/写操作,其中对于第一行的地点的读/修改/写操作要在对于第二行的所述位置的读操作之前完成。
16.如权利要求9所述的方法,还包括:
执行针对所述存储器访问请求序列的存储器访问,其中所述执行包括由多端口存储器在同一周期中执行多个读存储器访问或写存储器访问。
17.如权利要求9所述的方法,其中所述第一电路系统被配置为具有用于多个不同的存储器访问请求序列的存储器访问约束集合,所述方法还包括:
基于所述多个不同的存储器访问请求序列中的一个存储器访问请求序列的指示来选择所述存储器访问约束集合中的一个存储器访问约束集合。
18.如权利要求9所述的方法,还包括:
接收针对用于第二存储器访问请求序列的第二存储器访问约束集合的配置信息;以及
以所述第二存储器访问约束集合为依据来准许所述第二存储器访问请求序列,由此避免与所述第二存储器访问请求序列对应的第二存储器访问序列的存储器访问冒险。
19.一种低密度奇偶校验(LDPC)解码器,包括:
存储器,所述存储器被配置为存储用于接收到的事务的数据;
第一电路系统,所述第一电路系统被配置为针对LDPC奇偶校验矩阵的行顺序地执行:
从所述存储器检索所存储的数据的部分,其中所存储的数据的所述部分由所述LDPC奇偶校验矩阵的行中的条目指示;
处理检索出的部分;以及
基于所述处理来修改所存储的数据;以及
第二电路系统,所述第二电路系统被配置为具有用于顺序检索和修改的存储器访问约束,其中所述第二电路系统被配置为以所述存储器访问约束为依据来准许所述检索和修改,由此避免所述检索和修改之间的存储器访问冒险。
20.如权利要求19所述的LDPC解码器,其中所述LDPC奇偶校验矩阵和所述存储器访问约束是可编程的。
CN201580055272.4A 2014-09-04 2015-01-30 具有预配置的存储器仲裁的流水线分层ldpc解码 Active CN107078747B (zh)

Applications Claiming Priority (11)

Application Number Priority Date Filing Date Title
US201462045832P 2014-09-04 2014-09-04
US62/045,832 2014-09-04
US14/523,232 US20160070662A1 (en) 2014-09-04 2014-10-24 Reordering a Sequence of Memory Accesses to Improve Pipelined Performance
US14/523,039 2014-10-24
US14/523,413 2014-10-24
US14/522,869 2014-10-24
US14/523,413 US9569119B2 (en) 2014-09-04 2014-10-24 Self-addressing memory
US14/523,039 US9740411B2 (en) 2014-09-04 2014-10-24 Configuring circuitry with memory access constraints for a program
US14/523,232 2014-10-24
US14/522,869 US10078456B2 (en) 2014-09-04 2014-10-24 Memory system configured to avoid memory access hazards for LDPC decoding
PCT/US2015/013747 WO2016036408A1 (en) 2014-09-04 2015-01-30 Pipeline layered ldpc decoding with preconfigured memory arbitration

Publications (2)

Publication Number Publication Date
CN107078747A true CN107078747A (zh) 2017-08-18
CN107078747B CN107078747B (zh) 2020-10-27

Family

ID=55437557

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580055272.4A Active CN107078747B (zh) 2014-09-04 2015-01-30 具有预配置的存储器仲裁的流水线分层ldpc解码

Country Status (4)

Country Link
US (5) US9569119B2 (zh)
EP (1) EP3189596B1 (zh)
CN (1) CN107078747B (zh)
WO (1) WO2016036408A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110597237A (zh) * 2019-10-12 2019-12-20 北京北方华德尼奥普兰客车股份有限公司 一种增程式电动汽车整车控制器rcp系统的模拟方法
CN112639752A (zh) * 2018-08-24 2021-04-09 苹果公司 基于访问效率对存储器请求进行排序

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9569119B2 (en) * 2014-09-04 2017-02-14 National Instruments Corporation Self-addressing memory
US9733911B2 (en) 2015-11-11 2017-08-15 National Instruments Corporation Value transfer between program variables using dynamic memory resource mapping
US10509603B2 (en) * 2016-07-29 2019-12-17 Western Digital Technologies, Inc. Hierarchical variable code rate error correction coding
US10162522B1 (en) * 2016-09-30 2018-12-25 Cadence Design Systems, Inc. Architecture of single channel memory controller to support high bandwidth memory of pseudo channel mode or legacy mode
US10374631B2 (en) * 2017-08-22 2019-08-06 Goke Us Research Laboratory Look-ahead LDPC decoder
US11726671B2 (en) * 2021-06-24 2023-08-15 Micron Technology, Inc. Memory access mode selection
US12014073B2 (en) * 2022-05-17 2024-06-18 Micron Technology, Inc. Techniques for sequential access operations

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101047387A (zh) * 2007-03-23 2007-10-03 北京大学 一种多码率兼容ldpc码的构造方法及其译码器
US7340664B2 (en) * 2000-09-20 2008-03-04 Lsi Logic Corporation Single engine turbo decoder with single frame size buffer for interleaving/deinterleaving
US20100146362A1 (en) * 2008-12-08 2010-06-10 Samsung Electronics Co., Ltd. Contention-free parallel processing multimode LDPC decoder
CN102315899A (zh) * 2010-06-30 2012-01-11 中国科学院微电子研究所 一种低密度奇偶校验码的准循环译码方法
CN102437857A (zh) * 2011-12-12 2012-05-02 华中科技大学 一种ira-ldpc码的构造方法及其编码器
CN102932003A (zh) * 2012-09-07 2013-02-13 上海交通大学 基于gpu架构的qc-ldpc码的加速译码方法

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4001566A (en) * 1971-03-19 1977-01-04 Pico Electronics Limited Floating point calculator with ram shift register
CA1338639C (en) * 1989-09-26 1996-10-08 Seiichi Kubo Communication control device
US5789938A (en) * 1996-09-04 1998-08-04 Xilinx, Inc. Structure and method for reading blocks of data from selectable points in a memory device
US6366989B1 (en) * 1998-09-17 2002-04-02 Sun Microsystems, Inc. Programmable memory controller
US6216178B1 (en) * 1998-11-16 2001-04-10 Infineon Technologies Ag Methods and apparatus for detecting the collision of data on a data bus in case of out-of-order memory accesses of different times of memory access execution
US6640292B1 (en) * 1999-09-10 2003-10-28 Rambus Inc. System and method for controlling retire buffer operation in a memory system
US6571325B1 (en) * 1999-09-23 2003-05-27 Rambus Inc. Pipelined memory controller and method of controlling access to memory devices in a memory system
GB0002848D0 (en) * 2000-02-08 2000-03-29 Siroyan Limited Communicating instruction results in processors and compiling methods for processors
US6584531B1 (en) * 2000-04-27 2003-06-24 Lsi Logic Corporation Arbitration circuit with plural arbitration processors using memory bank history
GB0025053D0 (en) * 2000-10-12 2000-11-29 Sgs Thomson Microelectronics Compiling computer programs including branch instructions
US7043696B2 (en) * 2002-01-15 2006-05-09 National Instruments Corporation Graphical program system having a single graphical user interface shared by a plurality of graphical programs
US7149857B2 (en) * 2002-05-14 2006-12-12 Micron Technology, Inc. Out of order DRAM sequencer
JP4197034B2 (ja) 2004-09-29 2008-12-17 パナソニック株式会社 データインタリーブ装置
US7350029B2 (en) * 2005-02-10 2008-03-25 International Business Machines Corporation Data stream prefetching in a microprocessor
US20070023997A1 (en) * 2005-07-28 2007-02-01 Ertel John P System and method for optically detecting media feeding malfunctions in an image forming apparatus
DE102005038567A1 (de) * 2005-08-12 2007-02-15 Micronas Gmbh Multi-Prozessor-Architektur und Verfahren zum Steuern von Speicherzugriff bei einer Multi-Prozess-Architektur
US7610464B2 (en) * 2006-02-22 2009-10-27 Sony Computer Entertainment Inc. Methods and apparatus for providing independent logical address space and access management
US7596681B2 (en) * 2006-03-24 2009-09-29 Cirrus Logic, Inc. Processor and processing method for reusing arbitrary sections of program code
US8019959B2 (en) * 2007-02-09 2011-09-13 Marvell World Trade Ltd. Nonvolatile memory system
US7725794B2 (en) * 2007-03-21 2010-05-25 Advantest Corporation Instruction address generation for test apparatus and electrical device
US8418023B2 (en) * 2007-05-01 2013-04-09 The Texas A&M University System Low density parity check decoder for irregular LDPC codes
JP2009146229A (ja) * 2007-12-14 2009-07-02 Fuji Electric Systems Co Ltd プログラマブルコントローラシステム
JP5401049B2 (ja) * 2008-04-22 2014-01-29 日立造船株式会社 脱硝触媒製造用スラリー、同スラリーの製造方法、同スラリーを用いる脱硝触媒の製造方法および同方法により製造された脱硝触媒
TWI370361B (en) * 2008-08-21 2012-08-11 Ili Technology Corp Memory access controlling apparatus and control method thereof
GB2463252B (en) 2008-09-04 2010-09-01 Toshiba Res Europ Ltd A decoder and a method of decoding
TW201029337A (en) * 2009-01-16 2010-08-01 Ralink Technology Corp Method for decoding LDPC code and the circuit thereof
JP4892022B2 (ja) * 2009-03-03 2012-03-07 株式会社東芝 コンパイル装置およびコンパイルプログラム
US8549262B2 (en) * 2010-05-12 2013-10-01 International Business Machines Corporation Instruction operand addressing using register address sequence detection
EP2695070B1 (en) * 2011-04-08 2016-03-09 Altera Corporation Systems and methods for using memory commands
US8930657B2 (en) * 2011-07-18 2015-01-06 Infineon Technologies Ag Method and apparatus for realtime detection of heap memory corruption by buffer overruns
US20130290619A1 (en) * 2012-04-30 2013-10-31 Netapp, Inc. Apparatus and Method for Sequential Operation on a Random Access Device
US9081583B2 (en) * 2012-08-23 2015-07-14 National Instruments Corporation Compile time execution
US9274931B2 (en) * 2013-05-06 2016-03-01 International Business Machines Corporation Inserting implicit sequence points into computer program code to support debug operations
US20140379846A1 (en) * 2013-06-20 2014-12-25 Nvidia Corporation Technique for coordinating memory access requests from clients in a mobile device
US11645083B2 (en) * 2013-08-23 2023-05-09 Texas Instruments Incorporated Processor having adaptive pipeline with latency reduction logic that selectively executes instructions to reduce latency
US20150331608A1 (en) * 2014-05-16 2015-11-19 Samsung Electronics Co., Ltd. Electronic system with transactions and method of operation thereof
US9696927B2 (en) * 2014-06-19 2017-07-04 International Business Machines Corporation Memory transaction having implicit ordering effects
US9569119B2 (en) * 2014-09-04 2017-02-14 National Instruments Corporation Self-addressing memory

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7340664B2 (en) * 2000-09-20 2008-03-04 Lsi Logic Corporation Single engine turbo decoder with single frame size buffer for interleaving/deinterleaving
CN101047387A (zh) * 2007-03-23 2007-10-03 北京大学 一种多码率兼容ldpc码的构造方法及其译码器
US20100146362A1 (en) * 2008-12-08 2010-06-10 Samsung Electronics Co., Ltd. Contention-free parallel processing multimode LDPC decoder
CN102315899A (zh) * 2010-06-30 2012-01-11 中国科学院微电子研究所 一种低密度奇偶校验码的准循环译码方法
CN102437857A (zh) * 2011-12-12 2012-05-02 华中科技大学 一种ira-ldpc码的构造方法及其编码器
CN102932003A (zh) * 2012-09-07 2013-02-13 上海交通大学 基于gpu架构的qc-ldpc码的加速译码方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112639752A (zh) * 2018-08-24 2021-04-09 苹果公司 基于访问效率对存储器请求进行排序
CN110597237A (zh) * 2019-10-12 2019-12-20 北京北方华德尼奥普兰客车股份有限公司 一种增程式电动汽车整车控制器rcp系统的模拟方法
CN110597237B (zh) * 2019-10-12 2020-10-23 北京北方华德尼奥普兰客车股份有限公司 一种增程式电动汽车整车控制器rcp系统的模拟方法

Also Published As

Publication number Publication date
US10078456B2 (en) 2018-09-18
EP3189596B1 (en) 2020-09-30
US10331361B2 (en) 2019-06-25
US9569119B2 (en) 2017-02-14
WO2016036408A1 (en) 2016-03-10
CN107078747B (zh) 2020-10-27
US20170115885A1 (en) 2017-04-27
US20160070662A1 (en) 2016-03-10
US9740411B2 (en) 2017-08-22
US20160070485A1 (en) 2016-03-10
EP3189596A1 (en) 2017-07-12
US20160070498A1 (en) 2016-03-10
US20160070499A1 (en) 2016-03-10

Similar Documents

Publication Publication Date Title
CN107078747A (zh) 具有预配置的存储器仲裁的流水线分层ldpc解码
JP2022538721A (ja) 量子計算のためのスワップネットワーク
EP3884439A1 (en) Systems and methods involving hybrid quantum machines, aspects of quantum information technology and/or other features
CN114764549B (zh) 基于矩阵乘积态的量子线路模拟计算方法、装置
CN107517124A (zh) 基于tcp协议远程配置版本管理软件svn权限的方法及装置
WO2011142840A2 (en) Design and implementation of factor graphs
US20150040100A1 (en) Creation and Deployment of RESTful Web Services in a Graphical Programming Language
CN112463159A (zh) 编译方法、装置、电子设备和存储介质
US9768805B2 (en) LPDC encoding techniques using a matrix representation
CN108369510A (zh) 用于以无序加载的置换的指令和逻辑
CN107678741A (zh) 列表视图的实现方法、装置、可读存储介质及设备
US20160103664A1 (en) Correlation Analysis of Program Structures
CN113222157B (zh) 一种量子模拟方法、装置、电子装置及存储介质
US9733911B2 (en) Value transfer between program variables using dynamic memory resource mapping
Mokhov Algebra of switching networks
US20190341932A1 (en) LDPC Encoding Techniques
US10241764B2 (en) Automatically transform pass-by-value semantics into pass-by-reference implementation
JP5821499B2 (ja) パラレル置換を利用したbdd変数をリオーダする方法及びシステム
CESARE et al. The Gaia AVU-GSR parallel solver: preliminary porting with OpenACC parallelization language of a LSQR-based application in perspective of exascale systems
Thangavel Cascaded digital refinement for intrinsic evolvable hardware
JP2012089128A (ja) パラレルシフトアルゴリズムを利用してbddを処理する方法及びシステム
JP2012094133A (ja) 再帰を利用してbddの最適な変数順序を決定する方法及びシステム
US9990250B2 (en) Single-IC LDPC encoding and decoding implementations
EP4281911A1 (en) Quantum processor architecture with compiler support
JP5821500B2 (ja) Bddの最適なレイヤ交換スケジュールを決定する方法及びシステム

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