GB2519849A - Memory controller, memory arrangement and memory access method - Google Patents

Memory controller, memory arrangement and memory access method Download PDF

Info

Publication number
GB2519849A
GB2519849A GB1415322.5A GB201415322A GB2519849A GB 2519849 A GB2519849 A GB 2519849A GB 201415322 A GB201415322 A GB 201415322A GB 2519849 A GB2519849 A GB 2519849A
Authority
GB
United Kingdom
Prior art keywords
memory
banks
data
address
controller
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
GB1415322.5A
Other versions
GB2519849B (en
GB201415322D0 (en
Inventor
Nicholas Charles Leopold Jarmany
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.)
Nexteq PLC
Original Assignee
Quixant Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Quixant Ltd filed Critical Quixant Ltd
Publication of GB201415322D0 publication Critical patent/GB201415322D0/en
Publication of GB2519849A publication Critical patent/GB2519849A/en
Application granted granted Critical
Publication of GB2519849B publication Critical patent/GB2519849B/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • G06F11/167Error detection by comparing the memory output
    • 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/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • 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/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • 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/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

Abstract

A memory controller 10 is connected to multiple banks of memory 55ad and a host processor 70. The memory address space of the processor is redundantly mapped into the banks of memory, so that an individual address maps to more than one bank. When the processor sends a read operation to the memory controller, the memory controller may read the data from multiple banks and compare the results. If the results match, one copy of the data is returned. If they do not, an error indication, such as an interrupt, may be returned. The memory controller may be implemented as a state machine in a field programmable gate array.

Description

Memory Controller, Memory Arrangement and Memory Access Method
Field of the Invention
The present invention relates to a memory controller, memory arrangement and memory access method and is particularly applicable for use in environments requiring high integrity of data stored in an auxiliary memory.
Background to the Invention
There are different architectures of memory controllers to suit different environments. In the case of the average home PC or even a business server, a single memory array is typically used for random access memory and loss of data due to a system crash, power failure or the like is considered unfortunate but not a disaster. Memory controller architectures have therefore evolved with the aim to protect the content of memory as best as is possible during standard operation without impacting on cost and usability of the computer.
However, in many environments, the integrity of data is key. For some, this is a regulatory requirement, for others it is essential that an accurate record of the state of a system, past transactions and the like has been captured.
For example, in slot machines and similar gaming machines, critical data needs to be maintained continuously, even after power cycle events, as it forms a record of what has happened on a machine and is a crucial method of countering fraud, amongst other uses In large jackpot situations, it is not uncommon for the entire machine to be taken away after a win and disassembled to ensure no tampering or data integrity issues exist.
As discussed above, this critical data needs to be maintained continuously, even after power cycle events. As it is necessary to be able to guarantee that data is written correctly, it is usual for this data to be stored in memory that has a fast access time. Any delays could mean data is not actually stored in the case of a power failure event. Random Access Memory (RAM) technology provides the necessary speed but conventional RAM does not maintain its stored data after a power cycle event. Therefore, non-volatile RAM (NVRAM) is often used in this environment. A requirement for use of NVRAM in machines is often contained within the technical specifications for slot machines laid down by the various regulatory bodies. The licensing of slot machines for use in particular jurisdictions normally requires demonstration and testing of compliance with these specifications.
As described above, maintaining the integrity of data that is stored in NVRAM under all circumstances is a crucial requirement. NVRAM performance is typically selected or designed to enable any critical data to be written before a power failure causes the system to stop functioning. In addition, mechanisms to protect against data corruption whilst not significantly impacting on NVRAM performance are desirable.
In order to attempt to achieve the resilience and performance desired, multiple (generally three) identical copies of the data are maintained, often spread across more than one physical memory device. The different areas of NVRAM where these copies of the data are stored are commonly referred to as "banks".
Traditionally, NVRAM has been implemented using low-power SRAM (Static Random Access Memory) due to its high speed and the ability to retain data when power is removed by the use of batteries or other backup power sources. However, NVRAM can be made up from memory devices that are inherently non-volatile without the need for backup power sources. Flash memory is generally not a good solution due to poor write performance and block-based architecture that requires whole areas to be erased before new data can be written, along with the limited write endurance of flash technology. More recently, non-volatile RAM technologies such as MRAM (Magneto-restrictive Random Access Memory) have started to be used as the technology becomes more mature and cost effective. MRAM has the speed and random access of SRAM along with essentially infinite endurance.
It will be appreciated that the requirement for NVRAM based data storage is a critical and specialised part of systems such as slot machines. However, NVRAM based data storage is used as an auxiliary memory for specific purposes and does not generally form part of a standard computer system. This generally means the NVRAM controller logic that interfaces the CPU of the slot machine to the NVRJAM is specifically designed to match the needs of the slot machine industry.
The volume of data that needs to be saved and the frequency of updates usually results in a designer selecting NVRAM that has high performance. Indeed, poor NVRAM performance can impact the functionality of the game, as updates need to be made at critical phases of the game. If NVRAM operations do not complete in a timely manner, it can cause poor responsiveness in the game, as certain operations cannot continue until the NVRAM data is updated to maintain an accurate record.
In recent years, PC technology has tended to replace proprietary computer architectures in slot machines, due to the high performance, excellent graphics capabilities and relatively low cost. The NVRAM remained a specialist requirement and there was included via an interface to the CPU that has therefore evolved over the years to follow PC general system architecture.
NVRAM capabilities usually form part of the logic box" of a slot machine, either integrated onto the CPU board or onto a card plugged into an expansion slot or bus of the CPU board. The interface between the NVRAM memory devices and the CPU is generally designed to be as high speed as possible. Ideally, the interface would be connected as directly as possible to the memory bus of the CPU to maximise performance. However, it is important to note that the NVRAM memory is a separate logical block inside the computer system to the "main memory" that the processor uses to execute programs and store general data etc. As the performance of main memory is so critical to the overall performance of a computer system, it is usual that the CPU connects to main memory over a dedicated bus, which generally precludes connection of other memory devices. Hence all other peripherals and special memory devices, such as NVRAM, usually connect to the computer logic via more general purpose interface buses.
Whatever the bus used to connect the NVRAM to the computer system, there is necessarily some logic required to interface the native signals of the memory chips that comprise the NVRAM to the bus of the CPU. This interface logic matches the differing physical signals and the timings between the raw memory chips and the interface bus. This logic enables the NVRAM to appear in the memory or I/O address space of the computer system. In the past, buses of the computer system were relatively simple and the required logic was also straightforward. The buses present on more modern computer systems, such as PCI, are more complex and require more sophisticated interfaces. This extra complexity means the necessary interface logic is often implemented using programmable logic devices such as FPGAs. The job of this logic is simply to allow the NVRAM memory to be accessed by the CPU and also to make sure the NVRAM is protected when system power is removed. The CPU is responsible for reading, writing and the manipulation of all NVRAM data, including any copies.
In recent years, a new form of bus has come to dominate the PC industry called "PCI Express'. It is founded on the older PCI bus but provides for significantly faster data transfers using fewer physical signals. This is achieved by changing from a parallel-type bus (as in PCI) to a bus that is based on high speed serial bit streams. As the data is transmitted in serial form it has to be formatted into packets so that it can be correctly decoded at the receiving end, much like in a local area network (LAN). This requires even more sophisticated interface circuitry to interface the memory chips that comprise the NVRAM. This complexity precludes the use of simple logic for interfacing.
Although buses like PCI Express offer many benefits and potentially higher performance, they do have certain characteristics that are non-ideal for implementing NVRAM solutions. The most important of these drawbacks is latency. Although the data transfer bandwidth of a bus such as PCI Express (PCIe) is faster than older, parallel type buses they suffer one disadvantage. All transactions between a PCIe host and target require the request and any data to be assembled into a packet. In applications where large volumes of data are being sent in blocks (such as network traffic) this overhead is not significant. However, where small quantities of data need to be read from random locations the overhead can significantly impact overall performance. This can be in terms of bandwidth, but often more importantly in an application such as NVRAM for gaming, it can severely impact latency.
As the complexity and performance of gaming systems increases, the need for a high performance NVRAM function becomes more critical. With the random access nature of transactions with NVRAM, packet based buses such as PCI Express can introduce additional, latency related performance limitations. Typically the major impact to performance is with read cycles. With write cycles, modern computer architecture often posts" write cycles, so they appear to complete quickly to the software. In fact the computer hardware is simply processing and "despatching" the write data in the background. This is not possible for read cycles, as the software requires the read data to be available before it can continue. Hence the hardware must complete the entire read operation and the software must wait.
In other applications of computers, read performance is often improved by the use of caching techniques -a copy of the data is kept in fast memory local to the CPU, and any request for data from the device is satisfied by the local cached copy that is available much more quickly. However, caching of NVRAM data in gaming is often not acceptable, as there is the possibility that differences could occur between the cached copy and the actual data stored in the NVRAM itself. So, for NVRAM in gaming read cycles are often the critical performance constraint.
Current NVRAM interface technology typically acts simply to make all NVRAM bank data available to the host processor. The NVRAM controller connects to the host CPU bus and takes care of translation of signals, protocols and timing etc. The NVRAM memory banks typically appear in the host processors memory (or I/O) address range, hence allowing the entire contents of NVRAM to be directly manipulated by the game software.
Statement of Invention
According to an aspect of the present invention, there is provided a memory controller for a plurality of banks of memory, the memory controller including an interface connectable to a bus to communicate with a processor, the memory controller redundantly mapping the plurality of banks of memory to a memory space and includes a plurality of memory operators, each of the plurality of memory operators being executable by the memory controller for performing a different function on data in the memory space and/or one or more of the plurality of banks of memory, wherein, responsive to receipt at said interface of a request from said processor for one of said memory operators, the memory controller is configured to execute, independently of the processor, the respective memory operator on the memory space and/or one or more of the plurality of banks of memory.
Each of the memory operators when executed by the memory controller preferably perform a different function selected from a group including a hash or cyclic redundancy check on data stored at an address or address range, a comparison of data stored at an address or an address range, a data integrity check on data stored at an address or address range, a block copy or move operation for copying or moving data between different memory addresses or ranges. It will be appreciated that other operators such as encryption/decryption, file encoding or any other operation could be provided.
Each of the memory operators may be encoded in a field programmable gate array.
The memory controller may comprise a state machine, the state machine encoding each of the memory operators and being responsive to execute the respective memory operator upon receipt of a corresponding request at the interface.
The memory controller may further comprise: a first control pathway to provide access to the memory space transparently of said banks of memory; a second control pathway to provide access to each of said plurality of banks of memory; a pathway selection input to receive a selection of the control pathway to be used for a memory access request received via the interface.
The first control pathway may provide access including a read request directed to a logical memory address or range, the controller being responsive to a read request to perform a read operation on corresponding address or address range of each memory bank redundantly mapped to the memory address or range.
The memory controller may be arranged to generate an interrupt should a mismatch in memory contents of memory banks be detected during said read operation.
The memory controller may be arranged to return a single copy of the read data in the event of no mismatch being detected.
The memory controller is preferably configured to perform said read operation independently of the processor of said host computer.
According to another aspect of the present invention, there is provided a memory arrangement including: a first memory bank; a second memory bank; and, a memory controller to mirror the first memory bank in the second memory bank to form a logical memory space, the memory controller being configured to perform, on demand and only using processing resources of the memory controller, a requestable one of a plurality of functions on data in the memory space and/or on one or more of the plurality of banks of memory.
The functions may be selected from a group including a hash or cyclic redundancy check on data stored in an address or address range, a comparison of data stored at an address or an address range, a data integrity check on data stored in an address or address range, a block copy or move operation for copying or moving data between different memory addresses or ranges. It will be appreciated that other functions such as encryption/decryption, file encoding or any other function could be provided.
Each function may be encoded in a field programmable gate array.
The memory arrangement may preferably include or comprise a state machine, the state machine encoding each of the functions and being responsive to execute the respective function upon receipt of a corresponding request by the memory controller.
The memory arrangement may further comprise: a first control pathway to provide access to the logical memory space transparently of said banks of memory; a second control pathway to provide access to each of said plurality of banks of memory; a pathway selection input to receive a selection of the control pathway to be used for a memory access request.
The first control pathway may provide access including a read request directed to a logical memory address or range, the controller being responsive to a read request to perform a read operation on corresponding address or address range of each memory bank redundantly mapped to the memory address or range.
The memory controller may be arranged to generate an error condition should a mismatch in memory contents of memory banks be detected during said read operation.
The memory controller is preferably arranged to return a single copy of the read data in the event of no mismatch being detected.
According to another aspect of the present invention, there is provided a memory access method comprising: redundantly mapping a plurality of banks of memory to a memory space; providing an interface for receiving requests on the memory space; in response to receipt of a request at the interface, performing one of a plurality of memory operations on the memory space and/or one or more of the plurality of banks of memory and reporting a result, the one of the plurality of memory operations being determined in dependence on the request.
The plurality of memory operations are selected from a set including: a hash or cyclic redundancy check on data stored at an address or address range in the memory space or in the banks of memory; a comparison of data stored at an address or an address range in the memory space or in the banks of memory; a data integrity check on data stored at an address or address range in the memory space or in the banks of memory; and, a block copy or move operation for copying or moving data between different memory addresses or ranges in the memory space or in the banks of memory.
It will be appreciated that other functions such as encryption/decryption, file encoding or any other function could be provided.
The method may further comprise: providing a first control pathway to provide access via the interface to the memory space transparently of said banks of memory; providing a second control pathway to provide access via the interface to each of said plurality of banks of memory; and, receiving a pathway selection via said interface selecting the control pathway to be used for a memory access request.
Embodiments of the present invention seek to provide a memory controller and memory access method for memory types such as NVRAM. In preferred embodiments, the controller maps redundant memory banks into a memory space.
In preferred embodiments, the memory controller has multiple selectable modes of operation: a first, direct memory access, mode in which memory banks are separately accessible in the memory space and a second, managed memory access, mode in which the controller offers coordinated access and functions to the memory banks. For a game using managed memory mode, the presence of memory banks is transparent and a single logical memory address space is presented, with the existence of the separate banks only being apparent should a mismatch be detected during a read operation. In managed memory access mode, operations to the memory address space are mirrored to each individual bank by the memory controller so as to enable cross-checks and maintain redundant copies of data.
In preferred embodiments, the memory control architecture seeks to provide increased overall performance in comparison to conventional controllers in environments such as slot machines. In preferred embodiments, techniques are employed in which the volume of data transferred across the bus, particularly reads, between the CPU and the memory are significantly reduced, providing significant benefits to the slot machine game.
In preferred embodiments, the controller is arranged to receive control inputs to cause creating and/or maintaining copies of data in the multiple memory banks.
As such, the memory can be treated as a single memory by software with the redundant storage being handled transparently by the controller, thereby greatly reducing the game software's complexity for performing this function.
Preferably, the controller is operable to perform offloaded tasks for the CPU and software such as performing CRC calculations on data stored in NVRAM banks and other data integrity checks or data processing operations such as block copying of data.
Preferably, the controller has dual modes of operation, permitting direct access to the multiple banks of memory in a first mode of operation which therefore is compatible with existing gaming software and NVRAM management techniques and a second mode of operation in which enhanced functionality is enabled and data intensive computation tasks are offloaded from the CPU/software to the controller.
Such modes enable functionality to gradually be made use of by customers as and when they are ready to make use of it.
In the second mode where enhanced functionality is enabled, each read operation request is preferably a request to read a logical memory address or range.
A read request causes the controller to read of each address/range of each of the multiple memory banks. Should a mismatch be identified between the contents of the various memory banks being read, this is preferably flagged to the requester such as via an interrupt. Assuming there is no mismatch, a single copy of the read data is passed back to the requester.
Preferably, operations of the enhanced functionality are performed by a suitably configured hardware component such as a programmed FPGA and no software is executed by the host CPU/operating system in performing the reads and data comparisons.
Preferably, the controller architecture is such that the application software such as that used for the slot machine remains in full control of all decision making processes regarding how data mismatches are handled when they are reported by the controller -the software remains in control of decision making and for any steps taken to resolve data mismatches that might arise. Preferably, data from all the memory banks is always accessible to the host CPU, the enhanced functionality offering managed reads, writes and other functions on demand to the host CPU.
Preferably, both normal and enhanced modes may be selectively accessed on demand. Should the host CPU decide at any time to leverage the enhanced functions (or revert to normal mode from enhanced mode), this is preferably accessible to it via the controller.
Corruption of data can preferably be identified by comparing the data held in the different banks. Usually the data held in all the banks should be the same. A difference between data held in the banks indicates a corruption or error has occurred. Where more than two banks are maintained, it might be possible to not only identify but also correct bad data if two or more banks hold the same data. The analysis and action taken once a corruption is detected is usually handled by the game software.
In a preferred embodiment, the memory controller is implemented using combinatorial logic and one or more state machines. In such an implementation, there is no need for any intelligence" inside the logic and no need for any processor.
Indeed performing such functions using a local processor executing a program would almost certainly reduce overall performance. Instead, operations are simply defined in logical terms and in most instances would be implemented using one or more programmable logic (FPGA) hardware devices, ASICs or similar. This approach has the following benefits:- 1) As the logical operations are performed in hardware it is easy to make the operations work at the maximum speed of the NVRAM memory chips, with no "processing overhead" time. This ensures the maximum possible overall NVRAM performance.
2) If a microprocessor were embedded locally in the NVRAM logic it would need to execute a program. In the gaming industry there are strict requirements to provide mechanisms to verify any software in the system. A microprocessor would also have to operate at a much faster internal speed in order to achieve the same data throughput speed of simple hard logic. All this would add unnecessary complexity and cost.
In such an embodiment, the memory controller may offer local hardware automation of logically simple but data intensive processing functions. It is common for the gaming software to have to perform certain logical operations on ranges of data held in NVRAM. In conventional systems this would require the CPU to read the data from the NVRAM forming one bank, perform the required logical operation by software and write any result back to the NVRAM, and then repeat the process for each redundant bank. In embodiments of the present invention, the CPU communicates with the memory controller which then manages reads and writes to the individual memory banks, preferably in parallel.
Advantageously, the memory controller may offer memory operations to the CPU/host software environment. Examples of typical operations might be the copying of a block of data between NVRAM banks, comparing a range of memory between banks to check for differences, or calculation of a hash or CRC (Cyclic Redundancy Check) over a range of NVRAM data. Other operations may, for example, include such as data encryption or decryption based on an encryption key.
Performing such operations locally in the NVRAM logic can significantly reduce the amount of data movement across the bus. For example, in a conventional system, generating a CRC of lOKBytes of NVRAM data would require all this data to be moved across the bus to the CPU, the logical operation to be performed by the CPU in software and the result written back to the NVRAM across the bus.
Performing these operations locally in the memory controller simply requires the CPU to send a few bytes to the NVRAM controller to specify the logical operation to be performed and the address range of the data to be processed. The control module 30 then performs the logical operation and simply notifies the CPU when the operation has been completed. This requires only a few bytes to be transferred across the bus rather than 1 OKBytes. This is particularly important as the bulk of the saved memory transfers are reads, which suffer significantly from any latencies in the bus interfacing NVRAM to the host CPU.
Brief Description of the Drawings
Embodiments of the present invention will now be described in detail, by way of example only, with reference to the accompanying drawings in which: Figure 1 is a schematic diagram of a memory controller according to an embodiment; Figure 2 is a schematic diagram of a memory controller according to an embodiment; and, Figure 3 is an illustration of an example state machine executed by the memory controller of Figure 2.
Detailed Description
Figure 1 is a schematic diagram of a memory controller according to an embodiment of the present invention.
The memory controller 10 includes an input interface 20, a processing module and an output interface 40.
The output interface is arranged to communicate with each of a plurality of memory banks 55a-55c which collectively form a memory store 50.
The input interface 20 connects to a bus 60 of a computing device 100 and provides an addressable memory space corresponding to the memory store 50 to a CPU 70 (processor) of the computing device 100.
In one embodiment, the memory controller redundantly maps the plurality of banks of memory SSa-55c to the memory in the form of a memory space. In one embodiment, the memory controller includes a plurality of memory operators. Each of the plurality of memory operators is executable by the memory controller for performing a different function on data in the memory space and/or one or more of the plurality of banks of memory.
In response to receipt at the interface 20 of a request from said processor for one of said memory operators, the memory controller is configured to execute, independently of the processor 70, the respective memory operator on the memory space and/or one or more of the plurality of banks of memory.
In one embodiment, the memory controller has a direct memory access mode and a managed memory access mode. In the direct memory access mode, the memory controller 10 is substantially transparent and maps the addressable memory space to the individual banks 55a-55d of the memory store 50. This mode retains the flexibility for the host computer system to manipulate all the NVRAM data, including the data held in separate banks, under software control. This ensures that complete flexibility is retained. This is particularly advantageous should there be a need to resolve any discrepancies in the stored data as the data can be examined directly without influence by the memory controller 10.
In the managed memory access mode, the memory controller 10 manages the multiple banks 55a-55d and operations on them and presents them as a single addressable memory to the CPU 70. The processing module 30 receives data read and write requests from the CPU 70 via the bus 60 and input interface 20.
Preferably, the mode of operation is selected by the CPU/host system software via one or more registers associated with the controller 10.
In the case of a write request, a single copy of data to be written is communicated to the controller 10 and the processing module causes the data to be written to each of the different banks 55a-55d so as to produce a duplicated memory store in each bank.
In the case of a read request, the processing module 30 checks the respective data from each memory bank and performs a comparison of the obtained data. This is performed by a combination of logic and one or more state machines executed by the processing module 30. Data read from one of the banks is communicated to the CPU/requesting process. Should a mismatch of data be determined between banks during a read operation, the memory controller 10 is arranged to generate an interrupt to the CPU 70 and/or host system. Preferably, a register associated with the memory controller 10 or some other communications mechanism is used to convey data on the nature of the interrupt event to the game software along with other information (for example, the address at which a mismatch of data was found).
Instead of having to read data from each of the implemented banks across the interface bus as in conventional systems, in preferred embodiments of the present invention the memory controller operating under managed memory access mode, on receiving a read request automatically reads all banks simultaneously. It compares the data read from all the banks locally and generates a signal to the host CPU if a mismatch is detected and passes a single copy of the read data across the bus to the CPU otherwise. In a typical system that utilises three banks of data this mechanism reduces the volume of data transferred over the bus to the NVRAM logic by a factor of three, plus removes the overhead of the comparison operation(s), which is typically undertaken in software.
In one embodiment, the memory controller presents the memory operators as a number of commands that can be requested by the CPU 70. The commands are preferably encoded in the hardware or firmware of the controller (such as in one or more command state machines) that can be requested on demand by the CPU or an executing program of the computing device 100. Example commands may include CRC (cyclic redundancy check) operations, copying of a block of data between NVRAM banks, comparing a range of memory between banks to check for differences, block writes, write verification, block copy or calculation of a hash or other operation such as data encryption or decryption based on an encryption key.
Preferably, the command operators cause the memory controller to perform manipulation or processing of data held in the NVRAM memory banks 55a-55d.
Registers are preferably provided to allow commands to be sent to the memory controller 10 to cause it to execute the commands, and status registers are provided to indicate the results of the execution. The commands execute over blocks of data in the NVRAM devices and therefore take a finite time to complete. In preferred embodiments, a lock mechanism such as a free/busy register is implemented to prevent new operations from being started before previous ones have been completed. As a minimum this requires the memory controller to indicate when it is busy processing a certain task.
In one embodiment, management of the memory controller is performed using device driver software (and possibly associated software libraries) that is loaded by the operating system residing in the host computer. When the memory controller is in direct access mode, the device driver acts to allow the host computer software to directly access the raw data in the NVRAM memory banks. When the memory controller is in managed memory access mode, the device driver and associated libraries enable management of the higher level NVRAM functions and commands and to communicate back the various statuses of the NVRAM and/or the memory controller and manage any interrupts that are generated.
The extra complexity of the memory controller and the associated drivers and libraries means that changes may be needed to the way in which the game software interacts with the NVRAM memory in order to take advantage of the enhanced features and performance. However, due to the presence of the direct memory access mode, existing software can execute in an unmodified using this mode of the memory controller. Changes to the game software can be introduced at a convenient stage to switch on and take advantage of the enhanced modes of operation and commands, allowing a gradual migration. In addition, implementing the enhanced modes does not reduce flexibility in how the game manages data mismatches, as it is simple to switch back to direct memory access mode at any time to enable the game software to directly manipulate the raw data and decide how to manage and correct any discrepancies. Indeed it is generally intended that this is what would be the preferred action.
Figure 2 is a schematic diagram of a memory controller according to an embodiment.
As in Figure 1, the memory controller 10 includes an input interface 20, a processing module 30 and an output interface 40.
The output interface 40 is arranged to communicate with each of a plurality of memory banks 55a-55d which collectively form a memory store 50. Additionally, the output interface 40 includes output pins on which state data on operation of functions of the memory controller 10 is available.
Example signal inputs at the input interface 20 are illustrated. These are received via the bus of the computing device (not shown).
In operation, the memory controller 10 receives signal inputs from the computing device at the input interface. In the illustrated embodiment, the signal inputs concern a CRC (cyclic redundancy check) command to be executed on a block of data at an address range in the memory store 50. In managed memory access mode, the memory store 50 is presented as a single addressable memory space to the computing device and the presence of underlying memory banks 55a- 55c is transparent to the computing device. A CRC calculation may be executed (preferably with execution taking place in parallel) against each individual bank.
While only a single CRC result is presented to the requester in the case of a matching CRC being calculated for each bank, any mismatch in calculated CRCs for the respective banks would, in this mode of operation, result in an error being reported, such as via asserting a predetermined interrupt.
In direct memory access mode, the bank(s) to be used can be designed via the signal inputs.
Preferably, in order to protect integrity of data in the NVRAM, read and write access to the NVRAM is inhibited until the CRC command execution is completed by the FPGA.
Table 1 below sets out example signal inputs and outputs:
Signal Bit # Description Name
Clock 1 clock to crc engine Reset 1 reset to crc engine Soc 1 start of crc. One clock pulse along with the first data to initialize the initial values, data_valid must be asserted with ___________ ______ this indication.
Data 32 data on which the crc has to be computed. This data is validated with data_valid. Those data for which data_valid =1' will only be taken-in for crc computation, data for which __________ _____ data_valid = 0 will be ignored.
Data_valid 1 data_valid pin validates input data, only data for which data_valid pin = 1' will be taken-in to the crc engine. Data for __________ _____ which data_valid = 0' will be ignored.
Eoc 1 end of crc indication. One clock pulse, along with the last data.
Indication of last data to the crc engine, data_valid must be ___________ ______ asserted with this indication Crc 32 Computed crc will be available on these pins. CRC is valid __________ _____ only when crc_valid = 1'.
Crc_Valid 1 When crc_valid = 1' indicates that the crc computation is done and crc checksum is available on crc pins.
When crc_valid = 0', crc pins may contain intermediate crc __________ _____ value which may not be used.
Table 1
The CRC executed by the memory controller may, for example, be a CRC 32 type code as set out in IEEE standard 802.3. It will be appreciated that other CRC calculations may be performed and indeed, other check or calculation operations as discussed above could be implemented and performed in a similar manner.
The memory controller enables allows the computing device and software applications to use the FPGA hardware implemented data processing modules for background computation, thus reducing the access to NVRAM memory and the load of the computing device's CPU.
Figure 3 is an illustration of an example state machine executed by the memory controller of Figure 2 for the purpose of CRC calculation.

Claims (23)

  1. Claims 1. A memory controller for a plurality of banks of memory, the memory controller including an interface connectable to a bus to communicate with a processor, the memory controller redundantly mapping the plurality of banks of memory to a memory space and includes a plurality of memory operators, each of the plurality of memory operators being executable by the memory controller for performing a different function on data in the memory space and/or one or more of the plurality of banks of memory, wherein, responsive to receipt at said interface of a request from said processor for one of said memory operators, the memory controller is configured to execute, independently of the processor, the respective memory operator on the memory space and/or one or more of the plurality of banks of memory.
  2. 2. The memory controller of claim 1, wherein each of the memory operators when executed by the memory controller perform a different function selected from a group including a hash or cyclic redundancy check on data stored at an address or address range, a comparison of data stored at an address or an address range, a data integrity check on data stored at an address or address range, a block copy or move operation for copying or moving data between different memory addresses or ranges.
  3. 3. The memory controller of claim 1 or 2, wherein each of the memory operators is encoded in a field programmable gate array.
  4. 4. The memory controller of claim 1, 2 or 3, comprising a state machine, the state machine encoding each of the memory operators and being responsive to execute the respective memory operator upon receipt of a corresponding request at the interface.
  5. 5. The memory controller of any preceding claim, further comprising: a first control pathway to provide access to the memory space transparently of said banks of memory; a second control pathway to provide access to each of said plurality of banks of memory; a pathway selection input to receive a selection of the control pathway to be used for a memory access request received via the interface.
  6. 6. The memory controller of claim 5, wherein the first control pathway provides access including a read request directed to a logical memory address or range, the controller being responsive to a read request to perform a read operation on corresponding address or address range of each memory bank redundantly mapped to the memory address or range.
  7. 7. The memory controller of claim 6, wherein the memory controller is arranged to generate an interrupt should a mismatch in memory contents of memory banks be detected during said read operation.
  8. 8. The memory controller of claim 7, wherein the memory controller is arranged to return a single copy of the read data in the event of no mismatch being detected.
  9. 9. The memory controller of claim 6, 7 or 8, wherein the memory controller is configured to perform said read operation independently of the processor of said host computer.
  10. 10. A memory arrangement including: a first memory bank; a second memory bank; and, a memory controller to mirror the first memory bank in the second memory bank to form a logical memory space, the memory controller being configured to perform, on demand and only using processing resources of the memory controller, a requestable one of a plurality of functions on data in the memory space and/or on one or more of the plurality of banks of memory.
  11. 11. The memory arrangement of claim 10, wherein the functions are selected from a group including a hash or cyclic redundancy check on data stored in an address or address range, a comparison of data stored at an address or an address range, a data integrity check on data stored in an address or address range, a block copy or move operation for copying or moving data between different memory addresses or ranges.
  12. 12. The memory arrangement of claim 10 or 11, wherein each function isencoded in a field programmable gate array.
  13. 13. The memory arrangement of claim 10, 11 or 12, comprising a state machine, the state machine encoding each of the functions and being responsive to execute the respective function upon receipt of a corresponding request by the memory controller.
  14. 14. The memory arrangement of any of claims 10 to 13, further comprising: a first control pathway to provide access to the logical memory space transparently of said banks of memory; a second control pathway to provide access to each of said plurality of banks of memory; a pathway selection input to receive a selection of the control pathway to be used for a memory access request.
  15. 15. The memory arrangement of claim 14, wherein the first control pathway provides access including a read request directed to a logical memory address or range, the controller being responsive to a read request to perform a read operation on corresponding address or address range of each memory bank redundantly mapped to the memory address or range.
  16. 16. The memory arrangement of claim 15, wherein the memory controller is arranged to generate an error condition should a mismatch in memory contents of memory banks be detected during said read operation.
  17. 17. The memory arrangement of claim 16, wherein the memory controller is arranged to return a single copy of the read data in the event of no mismatch being detected.
  18. 18. A memory access method comprising: redundantly mapping a plurality of banks of memory to a memory space; providing an interface for receiving requests on the memory space; in response to receipt of a request at the interface, performing one of a plurality of memory operations on the memory space and/or one or more of the plurality of banks of memory and reporting a result, the one of the plurality of memory operations being determined in dependence on the request.
  19. 19. The memory access method of claim 18, wherein the plurality of memory operations are selected from a set including: a hash or cyclic redundancy check on data stored at an address or address range in the memory space or in the banks of memory; a comparison of data stored at an address or an address range in the memory space or in the banks of memory; a data integrity check on data stored at an address or address range in the memory space or in the banks of memory; and, a block copy or move operation for copying or moving data between different memory addresses or ranges in the memory space or in the banks of memory.
  20. 20. The memory access method of claim 18 or 19, further comprising: providing a first control pathway to provide access via the interface to the memory space transparently of said banks of memory; providing a second control pathway to provide access via the interface to each of said plurality of banks of memory; and, receiving a pathway selection via said interface selecting the control pathway to be used for a memory access request.
  21. 21. A memory controller as herein described and as illustrated in the accompanying drawings.
  22. 22. A memory arrangement as herein described and as illustrated in the accompanying drawings.
  23. 23. A method as herein described and as illustrated in the accompanying drawings.
GB1415322.5A 2013-08-29 2014-08-29 Memory controller, memory arrangement and memory access method Active GB2519849B (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GBGB1315397.8A GB201315397D0 (en) 2013-08-29 2013-08-29 Memory controller and memory access method

Publications (3)

Publication Number Publication Date
GB201415322D0 GB201415322D0 (en) 2014-10-15
GB2519849A true GB2519849A (en) 2015-05-06
GB2519849B GB2519849B (en) 2017-02-08

Family

ID=49397006

Family Applications (2)

Application Number Title Priority Date Filing Date
GBGB1315397.8A Ceased GB201315397D0 (en) 2013-08-29 2013-08-29 Memory controller and memory access method
GB1415322.5A Active GB2519849B (en) 2013-08-29 2014-08-29 Memory controller, memory arrangement and memory access method

Family Applications Before (1)

Application Number Title Priority Date Filing Date
GBGB1315397.8A Ceased GB201315397D0 (en) 2013-08-29 2013-08-29 Memory controller and memory access method

Country Status (2)

Country Link
US (2) US9690722B2 (en)
GB (2) GB201315397D0 (en)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2549722B (en) * 2016-04-25 2018-09-26 Imagination Tech Ltd Communications interface circuit architecture
US10515671B2 (en) * 2016-09-22 2019-12-24 Advanced Micro Devices, Inc. Method and apparatus for reducing memory access latency
CN110413202B (en) * 2018-04-28 2024-03-08 伊姆西Ip控股有限责任公司 Data replication method, apparatus and computer program product
US10951544B2 (en) * 2019-01-30 2021-03-16 The Boeing Company Apparatus and method of crosschecking data copies using one or more voter elements
TWI692768B (en) * 2019-05-16 2020-05-01 瑞昱半導體股份有限公司 SoC CAPABLE OF CHECKING CORRECTNESS OF MEMORY DATA
US11416959B1 (en) * 2020-02-10 2022-08-16 Zoox, Inc. Vision architecture
TWI768829B (en) * 2021-04-14 2022-06-21 宏碁股份有限公司 Parameter adjusting method for a memory device and a memory storage system

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5905854A (en) * 1994-12-23 1999-05-18 Emc Corporation Fault tolerant memory system
US20060288177A1 (en) * 2005-06-21 2006-12-21 Mark Shaw Memory mirroring apparatus and method
WO2010035316A1 (en) * 2008-09-24 2010-04-01 富士通株式会社 Memory control device and memory control method
JP2012003644A (en) * 2010-06-21 2012-01-05 Fujitsu Ltd Memory error part detection device and memory error part detection method
KR20120013504A (en) * 2010-08-05 2012-02-15 한국원자력연구원 A control unit having real-time self-diagnosis functions for digital safety systems of nuclear power plants

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7610462B2 (en) * 2004-09-16 2009-10-27 Wms Gaming Inc. Gaming machine with secure fault-tolerant memory
KR20070076849A (en) * 2006-01-20 2007-07-25 삼성전자주식회사 Apparatus and method for accomplishing copy-back operation in memory card
WO2007095368A2 (en) * 2006-02-14 2007-08-23 Wms Gaming Inc. Reorganizing a wagering game machine's nvram
US20080242426A1 (en) * 2007-03-28 2008-10-02 Kraft David W Gaming machine critical data memory system and method
US7900084B2 (en) * 2007-12-21 2011-03-01 Intel Corporation Reliable memory for memory controller with multiple channels
CN102473141B (en) * 2010-03-26 2015-08-05 松下电器产业株式会社 Nonvolatile memory devices and memory controller
CN103959253B (en) * 2011-12-01 2018-07-17 英特尔公司 Hardware based memory migration and re-synchronization method and system
US8719493B2 (en) * 2012-03-21 2014-05-06 Dell Products L.P. Memory controller-independent memory sparing

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5905854A (en) * 1994-12-23 1999-05-18 Emc Corporation Fault tolerant memory system
US20060288177A1 (en) * 2005-06-21 2006-12-21 Mark Shaw Memory mirroring apparatus and method
WO2010035316A1 (en) * 2008-09-24 2010-04-01 富士通株式会社 Memory control device and memory control method
JP2012003644A (en) * 2010-06-21 2012-01-05 Fujitsu Ltd Memory error part detection device and memory error part detection method
KR20120013504A (en) * 2010-08-05 2012-02-15 한국원자력연구원 A control unit having real-time self-diagnosis functions for digital safety systems of nuclear power plants

Also Published As

Publication number Publication date
GB2519849B (en) 2017-02-08
GB201315397D0 (en) 2013-10-16
GB201415322D0 (en) 2014-10-15
US20170255573A1 (en) 2017-09-07
US9690722B2 (en) 2017-06-27
US10019389B2 (en) 2018-07-10
US20150067216A1 (en) 2015-03-05

Similar Documents

Publication Publication Date Title
US10019389B2 (en) Memory controller and memory access method
US9052887B2 (en) Fault tolerance of data processing steps operating in either a parallel operation mode or a non-synchronous redundant operation mode
KR101903817B1 (en) Virtual disk storage techniques
US8386654B2 (en) System and method for transforming PCIe SR-IOV functions to appear as legacy functions
EP0514075A2 (en) Fault tolerant processing section with dynamically reconfigurable voting
CN108121672A (en) A kind of storage array control method and device based on Nand Flash memorizer multichannel
US8135869B2 (en) Task scheduling to devices with same connection address
US9098209B2 (en) Communication via a memory interface
US8990451B2 (en) Controller for direct access to a memory for the direct transfer of data between memories of several peripheral devices, method and computer program enabling the implementation of such a controller
US10296356B2 (en) Implementation of reset functions in an SoC virtualized device
EP4031963B1 (en) Tracing status of a programmable device
US10963295B2 (en) Hardware accelerated data processing operations for storage data
US20150286544A1 (en) Fault tolerance in a multi-core circuit
US8898653B2 (en) Non-disruptive code update of a single processor in a multi-processor computing system
US10705993B2 (en) Programming and controlling compute units in an integrated circuit
US7536694B2 (en) Exception handling in a multiprocessor system
US9053092B2 (en) System authorizing direct data transfers between memories of several components of that system
CN109983443B (en) Techniques to implement bifurcated non-volatile memory flash drives
NL2033511B1 (en) Fast memory ecc error correction
JP3615219B2 (en) System controller, control system, and system control method
CN111061591B (en) System and method for implementing data integrity check based on memory integrity check controller
CN101562034A (en) Method and device for positioning data consistency errors
CN113342257B (en) Server and related control method
US20220413712A1 (en) Distributed Exception Handling in Solid State Drives
US20210224209A1 (en) Computing system for transmitting completion early between serially connected electronic devices