# US 7,610,433 B2 · Memory controller interface

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 7,610,433 B2
- Document ID: US7610433B2
- Status: Granted
- Kind: B2
- Application number: 11/051,491
- Filed: 2005-02-04
- Published: 2005-08-25
- Granted: 2009-10-27
- Earliest claimed: 2004-02-05
- Assignees: Research In Motion Limited
- Inventors: Jerrold R. Randell; Richard C. Madter; Karin Alicia Werder
- Web page: https://patentgrep.com/patent/US7610433B2

## CPC

- G06F 12/0893: Caches characterised by their organisation or structure
- G06F 11/1068: {in sector programmable memories, e.g. flash disk (G06F11/1072 takes precedence)}
- G06F 12/0638: {Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module (address formation of the next microinstruction G06F9/26; masking faults in memories by using spares or by reconfiguring G11C29/70)}
- G06F 12/1441: {for a range}
- G06F 21/79: in semiconductor storage media, e.g. directly-addressable memories
- G06F 11/1441: {Resetting or repowering}
- G06F 11/2015: {Redundant power supplies (power supply failure G06F1/30)}
- G06F 2212/2022: Flash memory
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A memory interface controller and method to allow a processor designed and configured to operate with NOR flash and static random access memory (SRAM) memory devices to instead operate using NAND flash and synchronous dynamic random access memory (SDRAM). The system accomplishes this by caching sectors out of NAND flash into SDRAM, where the data can be randomly accessed by the processor as though it were accessing data from NOR flash/SRAM. Sectors containing data required by the processor are read out of NAND flash and written into SDRAM, where the data can be randomly accessed by the processor.

## Claims

### Claim 1

A memory controller interface for enabling a processor designed to support NOR flash and static random access memory (SRAM) components to use NAND flash and synchronous dynamic random access memory (SDRAM), the memory controller interface comprising:
a cache controller module for managing the flow of data between the NAND flash and sectors of SDRAM comprising a cache for storing data read from sectors of the NAND flash;
a read-write buffer in communication with the cache controller module and with interface controllers for the NAND flash and SDRAM, respectively, for buffering data read or written between the cache and the NAND flash memory;
a cache tag memory for storing at least one tag entry for correlating a sector of cache with a sector of NAND flash, such that when a processor requests data from the NAND flash, the memory controller interface is capable of accessing the appropriate data sector from the NAND flash, reading the requested data, and writing the data using the read-write buffer to a sector of the cache for future processor requests for said data sector;
a register accessible to the processor for storing fetched instructions; and
a register for storing predefined memory boundaries allocated to code execution by the processor,
wherein the memory controller interface is configured, upon detecting a request by the processor for access to a memory address beyond the predefined memory boundaries, to latch the memory address requested by the processor and to write a non-executable instruction to the register for storing fetched instructions, such that a software interrupt or undefined instruction trap is triggered when the processor reads the non-executable instruction.

### Claim 2 (depends on 1)

The memory controller interface of claim 1 wherein the cache tag memory is comprised in SDRAM comprised in the memory controller interface, and wherein the at least one tag entry comprises at least one modified sector bit for indicating whether a sector in the cache comprises modified data.

### Claim 3 (depends on 2)

The memory controller interface of claim 2 further comprising an error correction coding module in communication with the read-write buffer and the interface controller for the NAND flash for computing check code to be written to the NAND flash and for verifying and correcting data as it is read back from the NAND flash.

### Claim 4 (depends on 3)

The memory controller interface of claim 3 further comprising an encryption module for encrypting data before it is written from the cache to the NAND flash.

### Claim 5 (depends on 4)

The memory controller interface of claim 4 wherein the encryption module decrypts data read from the NAND flash before it is written to the cache.

### Claim 6 (depends on 1)

The memory controller interface of claim 1 wherein the read-write buffer comprises at least one read buffer for storing data retrieved from NAND flash to be written to the cache, and at least one write buffer for storing data retrieved from SDRAM to be written to NAND flash.

### Claim 7 (depends on 2)

The memory controller interface of claim 2 wherein the memory interface controller is able to interface to NAND flash components having an either 8-bit or 16-bit wide data bus.

### Claim 8 (depends on 1)

The memory controller interface of claim 1 wherein the read-write buffer comprises SRAM.

### Claim 9 (depends on 1)

The memory controller interface of claim 1 wherein the processor comprises an asynchronous or burst memory interface.

### Claim 10 (depends on 1)

The memory controller interface of claim 1 wherein the data stored in the NAND flash comprises boot code, and wherein the memory controller interface is configured such that when the boot code is accessed from the NAND flash, the memory controller interface scans the boot code for a predetermined signature comprised in the boot code; and if the predetermined signature is present in the boot code, designating at least a portion of the NAND flash to be read only.

### Claim 11

A communications device comprising a memory controller interface for enabling a processor designed to support NOR flash and static random access memory (SRAM) components to use NAND flash and synchronous dynamic random access memory (SDRAM), the memory controller interface comprising:
a cache controller module for managing the flow of data between the NAND flash and sectors of SDRAM comprising a cache for storing data read from sectors of the NAND flash;
a read-write buffer in communication with the cache controller module and with interface controllers for the NAND flash and SDRAM, respectively, for buffering data read or written between the cache and the NAND flash memory;
a cache tag memory for storing at least one tag entry for correlating a sector of cache with a sector of NAND flash, such that when a processor requests data from the NAND flash, the memory controller interface is capable of accessing the appropriate data sector from the NAND flash, reading the requested data, and writing the data using the read-write buffer to a sector of the cache for future processor requests for said data sector;
a register accessible to the processor for storing fetched instructions; and
a register for storing predefined memory boundaries allocated to code execution by the processor,
wherein the memory controller interface is configured, upon detecting a request by the processor for access to a memory address beyond the predefined memory boundaries, to latch the memory address requested by the processor and to write a non-executable instruction to the register for storing fetched instructions, such that a software interrupt or undefined instruction trap is triggered when the processor reads the non-executable instruction.

### Claim 12 (depends on 11)

The communications device of claim 11, wherein the cache tag memory is comprised in SDRAM comprised in the memory controller interface, and wherein the at least one tag entry comprises at least one modified sector bit for indicating whether a sector in the cache comprises modified data, the memory controller interface further comprising:
an error correction coding module in communication with the read-write buffer and the interface controller for the NAND flash for computing check code to be written to the NAND flash and for verifying and correcting data as it is read back from the NAND flash; and
an encryption module for encrypting data before it is written from the cache to the NAND flash, wherein the encryption module decrypts data read from the NAND flash before it is written to the cache.

### Claim 13 (depends on 11)

The communications device of claim 11, wherein the read-write buffer comprises at least one read buffer for storing data retrieved from NAND flash to be written to the cache, and at least one write buffer for storing data retrieved from SDRAM to be written to NAND flash.

### Claim 14

A handheld data processing device comprising a memory controller interface for enabling a processor designed to support NOR flash and static random access memory (SRAM) components to use NAND flash and synchronous dynamic random access memory (SDRAM), the memory controller interface comprising:
a cache controller module for managing the flow of data between the NAND flash and sectors of SDRAM comprising a cache for storing data read from sectors of the NAND flash;
a read-write buffer in communication with the cache controller module and with interface controllers for the NAND flash and SDRAM, respectively, for buffering data read or written between the cache and the NAND flash memory;
a cache tag memory for storing at least one tag entry for correlating a sector of cache with a sector of NAND flash, such that when a processor requests data from the NAND flash, the memory controller interface is capable of accessing the appropriate data sector from the NAND flash, reading the requested data, and writing the data using the read-write buffer to a sector of the cache for future processor requests for said data sector;
a register accessible to the processor for storing fetched instructions; and
a register for storing predefined memory boundaries allocated to code execution by the processor,
wherein the memory controller interface is configured, upon detecting a request by the processor for access to a memory address beyond the predefined memory boundaries, to latch the memory address requested by the processor and to write a non-executable instruction to the register for storing fetched instructions, such that a software interrupt or undefined instruction trap is triggered when the processor reads the non-executable instruction.

### Claim 15 (depends on 14)

The handheld data processing device of claim 14, wherein the cache tag memory is comprised in SDRAM comprised in the memory controller interface, and wherein the at least one tag entry comprises at least one modified sector bit for indicating whether a sector in the cache comprises modified data, the memory controller interface further comprising:
an error correction coding module in communication with the read-write buffer and the interface controller for the NAND flash for computing check code to be written to the NAND flash and for verifying and correcting data as it is read back from the NAND flash; and
an encryption module for encrypting data before it is written from the cache to the NAND flash, wherein the encryption module decrypts data read from the NAND flash before it is written to the cache.

### Claim 16 (depends on 14)

The handheld data processing device of claim 14, wherein the read-write buffer comprises at least one read buffer for storing data retrieved from NAND flash to be written to the cache, and at least one write buffer for storing data retrieved from SDRAM to be written to NAND flash.

### Claim 17

A data processing device comprising a memory controller interface for enabling a processor designed to support NOR flash and static random access memory (SRAM) components to use NAND flash and synchronous dynamic random access memory (SDRAM), the memory controller interface comprising:
a cache controller module for managing the flow of data between the NAND flash and sectors of SDRAM comprising a cache for storing data read from sectors of the NAND flash;
a read-write buffer in communication with the cache controller module and with interface controllers for the NAND flash and SDRAM, respectively, for buffering data read or written between the cache and the NAND flash memory;
a cache tag memory for storing at least one tag entry for correlating a sector of cache with a sector of NAND flash, such that when a processor requests data from the NAND flash, the memory controller interface is capable of accessing the appropriate data sector from the NAND flash, reading the requested data, and writing the data using the read-write buffer to a sector of the cache for future processor requests for said data sector;
a register accessible to the processor for storing fetched instructions; and
a register for storing predefined memory boundaries allocated to code execution by the processor,
wherein the memory controller interface is configured, upon detecting a request by the processor for access to a memory address beyond the predefined memory boundaries, to latch the memory address requested by the processor and to write a non-executable instruction to the register for storing fetched instructions, such that a software interrupt or undefined instruction trap is triggered when the processor reads the non-executable instruction, and
wherein the data stored in the NAND flash comprises boot code, and wherein the memory controller interface is configured such that when the boot code is accessed from the NAND flash, the memory controller interface scans the boot code for a predetermined signature comprised in the boot code; and if the predetermined signature is present in the boot code, designating at least a portion of the NAND flash to be read only.

### Claim 18

A communications device comprising a memory controller interface for enabling a processor designed to support NOR flash and static random access memory (SRAM) components to use NAND flash and synchronous dynamic random access memory (SDRAM), the memory controller interface comprising:
a cache controller module for managing the flow of data between the NAND flash and sectors of SDRAM comprising a cache for storing data read from sectors of the NAND flash;
a read-write buffer in communication with the cache controller module and with interface controllers for the NAND flash and SDRAM, respectively, for buffering data read or written between the cache and the NAND flash memory;
a cache tag memory for storing at least one tag entry for correlating a sector of cache with a sector of NAND flash, such that when a processor requests data from the NAND flash, the memory controller interface is capable of accessing the appropriate data sector from the NAND flash, reading the requested data, and writing the data using the read-write buffer to a sector of the cache for future processor requests for said data sector;
a register accessible to the processor for storing fetched instructions; and
a register for storing predefined memory boundaries allocated to code execution by the processor,
wherein the memory controller interface is configured, upon detecting a request by the processor for access to a memory address beyond the predefined memory boundaries, to latch the memory address requested by the processor and to write a non-executable instruction to the register for storing fetched instructions, such that a software interrupt or undefined instruction trap is triggered when the processor reads the non-executable instruction, and
wherein the data stored in the NAND flash comprises boot code, and wherein the memory controller interface is configured such that when the boot code is accessed from the NAND flash, the memory controller interface scans the boot code for a predetermined signature comprised in the boot code; and if the predetermined signature is present in the boot code, designating at least a portion of the NAND flash to be read only.
