Patentable/Patents/US-RE051032-B2
US-RE051032-B2

Memory system having high data transfer efficiency and host controller

PublishedSeptember 15, 2026
Assigneenot available in USPTO data we have
Technical Abstract

According to one embodiment, the host controller includes a register set to issue command, and a direct memory access (DMA) unit and accesses a system memory and a device. First, second, third and fourth descriptors are stored in the system memory. The first descriptor includes a set of a plurality of pointers indicating a plurality of second descriptors. Each of the second descriptors comprises the third descriptor and fourth descriptor. The third descriptor includes a command number, etc. The fourth descriptor includes information indicating addresses and sizes of a plurality of data arranged in the system memory. The DMA unit sets, in the register set, the contents of the third descriptor forming the second descriptor, from the head of the first descriptor as a start point, and transfers data between the system memory and the host controller in accordance with the contents of the fourth descriptor.

Patent Claims

Legal claims defining the scope of protection, as filed with the USPTO.

1

a register set which is configured to store a part of information in the third descriptor; a command controller which is configured to issue a command to the memory device according to the information stored in the register set; and a direct memory access (DMA) unit which is configured to load the first, third, and fourth descriptors into the host controller, and is configured to transfer data between the system memory and the memory device according to the first, third, and fourth descriptors, wherein the first descriptor includes a plurality of pointers with attributes, each of the pointers of the first descriptor indicates a leading region of the third descriptor, the third descriptor includes command issue information and attributes, the fourth descriptor includes a number of DMA execution information and attributes, wherein the DMA unit is configured (1) to load the first descriptor, (2) to acquire the pointer from the loaded first descriptor, (3) to load the third descriptor and the fourth descriptor based on the acquired pointer, (4) to execute a data transfer between the system memory and the memory device, (5) to repeat the process of (2) to (4) until the attribute of the first descriptor indicates the end of descriptor, and (6) to generate an interrupt to the CPU when the data transfer is end or during a DMA data transfer, wherein the third descriptors includes information to generate a data transfer command of the memory device, a command argument, a command number, a block length, and the number of blocks, wherein the fourth descriptor includes information to designate system memory areas addresses, and sizes for each of a plurality of scattered data in the system memory, and wherein the DMA unit includes: a system address controller configured to control addresses of the system memory pointing data and each descriptor, and a data buffer, wherein the data in the system memory is read to the data buffer in accordance with the fourth descriptor, and the data in the data buffer is transferred to the memory device in accordance with the third descriptor when the data is written into the memory device, and the data in the memory device is read to the data buffer in accordance with the third descriptor, and the data in the data buffer is transferred to the system memory in accordance with the fourth descriptor when the data is read from the memory device. . A host controller which is connected to a memory device through an interface, accesses a system memory, and is controlled by a CPU executing a host driver, wherein each of first, third, and fourth descriptors has an attribute field for identifying a type of the descriptors, and designating a processing method of the descriptors, the host controller comprising:

2

claim 1 . The host controller according to, wherein the fourth descriptor is programmed so that a sum of sizes of a plurality of scattered data equals to the block length indicated in the third descriptor.

3

claim 1 the memory device acquires information necessary for the data transfer from the command. . The host controller according to, wherein the data transfer between the host controller and the memory device is started by a memory read/write command which is issued by command controller when setting information of the third descriptor to the register set is completed, and

4

(1) loading the first descriptor including a plurality of pointers with attributes; (2) acquiring a pointer from the loaded first descriptor, wherein the pointer indicates a leading region of the third descriptor; (3) loading the third descriptor based on the pointer to issue a command, wherein the third descriptor includes command issue information and attributes; (4) issuing a command according to the loaded third descriptor; (5) loading the fourth descriptor based on the pointer, wherein the fourth descriptor includes a number of DMA execution information and attributes; (6) when the issued command is a read-command, reading data from the system memory to a data buffer in accordance with the fourth descriptor and transferring the data from the data buffer to the memory device in accordance with the third descriptor; when the issued command is a write-command, reading data from the memory device to the data buffer in accordance with the third descriptor, and transferring the data from the data buffer to the system memory in accordance with the fourth descriptor; (7) repeating (2) to (6) until an attribute of the first descriptor indicates the end of descriptor; and (8) generating an interrupt when a data transfer is end or during a DMA data transfer, wherein the third descriptor includes information to generate a data transfer command of the memory device, a command argument, a command number, a block length, and the number of blocks, wherein the fourth descriptor includes information to designate system memory areas addresses, and sizes for each of a plurality of scattered data in the system memory. . A method for transferring data between a memory device and a system memory executed by a host controller, the system memory storing first, third, and fourth descriptors, the method comprising:

5

claim 4 information for indicating the type of descriptor; and an end bit indicating the last descriptor for each of the first, third, and fourth descriptors. . The method according to, wherein the first, third, and fourth descriptors includes:

6

loading, from a memory, a second descriptor pointer described first among a plurality of second descriptor pointers described in a first descriptor, the first descriptor including a set of a plurality of pointers indicating a plurality of second descriptors; loading, from the memory a second descriptor indicated by the loaded second descriptor pointer; loading, from the memory, a third descriptor described at a head of the second descriptor, writing contents of the third descriptor in a register, and issuing a command, the third descriptor including information for issuing an SD command; loading a fourth descriptor from the memory, loading data indicated by an address described in the fourth descriptor, and transferring the data between a system memory and a buffer, the fourth descriptor including information indicating addresses and sizes of a plurality of data arranged in the system memory, the fourth descriptor being a pair with the third descriptor; and repeating the above-mentioned operation, and generating an interrupt when all the data has been transferred. 6. A DMA transfer control method comprising:

7

claim 6 the information for issuing the SD command is a command number, a command operation mode, and an argument, and the third descriptor further includes information for transferring the data, the information for transferring the data being a block length and a number of blocks. 7. The method according to, wherein

8

claim 7 8. The method according to, wherein one SD command is issued by writing the third descriptor in the register set.

9

claim 8 9. The method according to, wherein a host controller includes an SD command generation unit of the register set.

10

claim 6 10. The method according to, wherein one continuous region of an SD memory card can be designated by one of read/write commands.

11

claim 6 11. The method according to, wherein a host driver activates the DMA transfer.

12

claim 6 12. The method according to, wherein a controller including the DMA transfer generates the interrupt.

13

claim 12 13. The method according to, wherein each of the first descriptor, the second descriptor, the third descriptor, and the fourth descriptor has attribute information containing information for identifying a type of descriptor, and information indicating an end position of the descriptor.

Detailed Description

Complete technical specification and implementation details from the patent document.

More than one reissue application has been filed for the reissue of U.S. Pat. No. 9,122,630. The reissue applications are the present reissue continuation application, which is a continuation of application Ser. No. 17/396,421 filed Aug. 6, 2021 (now RE49,875), which is a continuation of application Ser. No. 16/559,092 filed Sep. 3, 2019 (now RE48,736), which is a continuation of application Ser. No. 15/462,431 filed Mar. 17, 2017 (now RE47,659). The present application claims benefit of priority under 35 U.S.C. § 120 from applications 17/396,421, 16/559,092, and. 15/462,431.

This application is a continuation of and claims the benefit of priority under 35 U.S.C. §120 from U.S. Ser. No. 14/338,038 filed Jul. 22, 2014, which is a continuation of U.S. Ser. No. 14/172,995 filed Feb. 5, 2014 (now U.S. Pat. No. 8,825,923 issued Sep. 2, 2014), which is a continuation of Ser. No. 13/865,754 filed Apr. 18, 2013 (now U.S. Pat. No. 8,683,093 issued Mar. 25, 2014), which is a continuation of U.S. Ser. No. 13/473,212 filed May 16, 2012 (now U.S. Pat. No. 8,447,896 issued May 21, 2013), which is a continuation of U.S. Ser. No. 13/052,147 filed Mar. 21, 2011 (now U.S. Pat. No. 8,195,845 issued Jun. 5, 2012), and claims the benefit of priority under 35 U.S.C. §119 from Japanese Patent Application No. 2010-212721 filed Sep. 22, 2010, the entire contents of each of which are incorporated herein by reference.

Embodiments described herein relate generally to a host controller and memory system to be applied to, e.g., a SD™ card, and supporting advanced direct memory access (ADMA).

Recently, SD cards such as SD memory cards are widely used in, e.g., cell phones and digital still cameras as host devices. This SD card is connected to a host device via a host controller, and the host controller controls data transmission between the host device and SD memory card.

A system memory installed in a host device is managed by paging. Therefore, data in the system memory is fragmentarily managed page-by-page.

To efficiently perform data read/write to a memory card, a host controller supports DMA algorithm capable of data transfer managed page-by-page. That is, data fragmented in the system memory can be transferred by DMA by using a descriptor as a data transfer list.

Unfortunately, conventional DMA algorithm generates an interrupt in order to generate a new system address in the boundary between pages. This disturbs the operation of a CPU. ADMA has been developed in order to eliminate this problem.

ADMA has a function of transferring data to fragmented data areas in the system memory by paging, in accordance with one read/write command of an SD card. Accordingly, ADMA controls data transfer between the host controller and system memory without any interrupt to the CPU by loading the descriptor in the system memory. A host driver controls the issue of a command to the memory card by setting a register set in the host controller, thereby controlling data transfer between the host controller and memory card, and interruption to the CPU has been used. This method poses no problem when the bus performance is low as in a conventional memory.

As the bus performance improves and high-speed data transfer becomes possible in recent years, however, the processing of the host driver generates an overhead. Since it is not always possible to continuously use the area of the memory card, a memory command must be divided into a plurality of memory commands. To control command issue to the memory card by the host driver, the host driver must be executed by causing the host CPU to generate an interrupt midway along data transfer. Therefore, it takes a certain time to respond to the interrupt. This deteriorates the performance because of the influence of the waiting time of the driver processing even when using a high-speed bus.

Accordingly, demands have arisen for a method of efficiently performing data transfer by making it possible to execute, by DMA, the processing requiring the host driver during data transfer.

In general, according to one embodiment, a memory system includes a host controller and DMA unit. The host controller includes a register set configured to control command issue to a device, and a direct memory access (DMA) unit configured to access a system memory, and controls transfer between the system memory and the device. First, second, third and fourth descriptors are stored in the system memory. The first descriptor includes a set of a plurality of pointers indicating a plurality of second descriptors. Each of the second descriptors comprises the third descriptor and fourth descriptor. The third descriptor includes a command number, a command operation mode, and an argument as information necessary to issue a command to the device, and a block length and the number of blocks as information necessary for data transfer. The fourth descriptor includes information indicating addresses and sizes of a plurality of data arranged in the system memory. The ADMA unit sets, in the register set, the contents of the third descriptor forming the second descriptor, from the head of the first descriptor as a start point, and loads and transfers data from the system memory in accordance with the contents of the fourth descriptor.

The embodiment will be explained below with reference to the accompanying drawing. The ADMA described below is an ADMA improved by the embodiment.

1 FIG. schematically shows the memory system according to this embodiment.

This embodiment makes it possible to issue SD commands by a host controller during DMA transfer by extending a descriptor capable of data transfer of a system memory, thereby reducing the overhead caused by host driver processing.

11 12 13 14 1 FIG. A system controllershown incontrols interfaces with a CPU, system memory, and SD controller.

13 21 22 23 21 22 23 13 The system memorystores a host driver, descriptor table, and data. An operating system (OS) secures areas required to store the host driver, descriptor table, and datain the system memory.

21 14 12 21 22 22 13 22 The host driveris a driver provided for, e.g., the SD host controllerand unique to the OS, and is executed by the CPU. The host drivergenerates the descriptor tablebefore executing ADMA (to be described later). The descriptor tableis a list of information necessary for data transfer between the system memoryand an SD card, and is described by format which can be interpreted by the SD host controller. The structure of the descriptor tablewill be described later.

14 13 14 31 32 33 34 35 The SD host controllerhas a function of bidirectionally transferring data between the system memoryand an SD card by using SD commands. The SD host controllermainly includes a system bus interface circuit, a memory card interface circuit, a register setincluding a plurality of registers, an ADMA, and a timer.

31 11 32 15 16 The system bus interface circuitis connected to the system controllervia a system bus. The memory card interface circuitis connectable to SD cards, e.g., an SD memory cardand SDIO card, via an SD bus interface (not shown). The SD bus interface is not limited to 4-bits type, but can be applied to e.g. UHS (Ultra High Speed)-II using LVDS (Low Voltage Differential Signaling) system. In UHS-II, commands are transferred in packet form.

33 14 33 33 The register setof the SD host controlleris classified into a plurality of units (not shown) such as an SD command generation unit, response unit, buffer data port unit, host control unit, interrupt control unit, and ADMA unit. Information such as a command number, command mode, and argument necessary to issue an SD command and information such as a block length and the number of blocks necessary to transfer data are set in the SD command generation unit of the register set. When these pieces of information are set, the SD command generation unit issues a command to an SD card. The response unit in the register setreceives a response supplied from the SD card in response to the command.

34 13 12 34 22 13 The ADMAis a circuit for transferring data between an SD card and the system memorywithout any intervention of the CPU. The ADMAexecutes data transfer in accordance with contents described in the descriptor tablein the system memory.

35 35 12 The timerdetects a timeout error. For example, the timerdetects a timeout error if the operation of a read command is not complete within a time set from the issue to the end of the read command. The CPUis notified of this timeout error by an interrupt, and the timeout error is processed by the host driver.

2 FIG. 13 13 12 13 12 13 13 shows an example of the relationship between paging management of the system memoryand SD physical addresses. The system memoryis managed by paging for each small area, e.g., a 4-Kbyte area. An application executed by the host CPUaccesses the system memoryby a logical address by using a paging function managed by the host CPU. As indicated by a logical address system memory map, therefore, data are apparently arranged in a continuous address area. However, positions in the system memoryin which data are actually recorded are arbitrary, and fragmented as indicated by a physical address system memory map. These data are managed by the addresses and data lengths. The data length is variable. Also, the relationship between the physical address and logical address of data stored in the system memoryis managed by a page table (not shown).

13 13 13 15 13 13 15 On the other hand, data stored in the SD memory cardare managed for each page (each block) having, e.g., 512 bytes to a few Mbytes, and completely independent of the system memory. When data in the system memoryis to be stored in the SD memory card, therefore, as indicated by an SD physical address memory map, the data in the system memoryis stored by a size different from that in the system memory. Data in the SD memory cardis held in continuous memory area designated for each command and has an address designated by the command. The data length is variable and is designated by the other command.

13 13 DMA transfer directly accesses the system memoryby the physical address. Accordingly, DMA can be executed by forming a descriptor as a transfer list in the system memory.

3 FIG. 22 13 shows a descriptor according to this embodiment. This descriptor is formed in the descriptor tableof the system memory.

13 15 12 The descriptor of this embodiment extends a conventional descriptor and has a hierarchical structure. When using the descriptor of this embodiment, data transfer performed between the system memoryand SD memory cardby ADMA is completely executable by hardware. This obviates the need to interrupt the host CPUduring data transfer. Although an error processing request is notified by an interrupt, no problem arises because the probability of its occurrence is very low.

3 FIG. As shown in, a first descriptor (integrated descriptor) is a set of pointers to a plurality of second descriptors (partial descriptors).

Each second descriptor (partial descriptor) is a pair of a third descriptor (SD command descriptor) and a fourth descriptor (system memory descriptor).

33 14 The contents of the third descriptor are formed by information for issuing an SD command. That is, the contents of the third descriptor are formed by, e.g., a command number, a command mode, an argument, and a block length and the number of blocks as information necessary for data transfer. The command mode indicates, e.g., read/write. One SD command is issued by writing the third descriptor in the SD command generation unit of the register setof the SD host controller.

13 The contents of the fourth descriptor (system memory descriptor) are formed by an address indicating the position of each data in the system memory, and a length indicating the data length, and indicate a set of a plurality of fragmented data.

2 FIG. Since the third descriptor corresponds to one of read/writ commands, one continuous region of the SD memory card can be designated. As shown in, when the memory region is divided into two or more regions, each of the regions needs the third descriptor. Therefore, the fourth descriptor corresponding to the third descriptor is programmed to the same data length as that of each third descriptor.

The first to fourth descriptors each have attribute information Att. Each attribute information Att contains, e.g., information for identifying the type of descriptor, and an end bit indicating the end position of the descriptor.

Note that the third descriptor has a format different from that of the other descriptors, so the attribute information Att may be provided in accordance with at least the first command number. Moreover, the attribute information Att may be provided with each line the same as another descriptor.

4 FIG. 34 34 34 34 34 34 shows an outline of the arrangement of the ADMA. The ADMAincludes a system address controllera, data bufferb, SD command controllerc, and buffer memoryd.

34 13 34 13 34 34 13 34 34 34 34 34 13 34 13 34 13 The system address controllera manages addresses in the system memory. More specifically, the system address controllera manages the load of the first to fourth descriptors stored in the system memory. That is, the start address of the first descriptor (integrated descriptor) is set in the system address controllera as initial value. Thereby, the system address controllera is able to read information of the first descriptor from the memory. Since pointers of each of the second descriptors are described in the first descriptor, the system address controllera reads an address of the second descriptor designated by each of the pointers and reads the second descriptor in accordance with the address. Then, the system address controllera transfers an SD command descriptor as the third descriptor forming the second descriptor to the SD command controllerc. In addition, the system address controllera sequentially loads the address and data length of data described in the fourth descriptor forming the second descriptor. In accordance with the loaded address and data length, the system address controllera reads data from the system memoryand transfers the data to the data bufferb when performing memory write. When performing memory read, the system address controllera transfers data from the data bufferb to the system memory.

34 34 1 34 4 34 5 To execute these operations, the system address controllera includes a plurality of registersa_toa_, and a multiplexer (MPX)a_for selecting output signals from these registers, in order to hold the start address of the first descriptor (integrated descriptor), the pointer of the second descriptor (partial descriptor), and the address and data length of data.

34 33 14 33 The SD command controllerc sequentially generates register addresses for setting values in the SD command generation unit, and sequentially sets, in the SD command generation unit of the register setof the host controller, register setting information contained in an SD command descriptor as the third descriptor. When the setting of the registers is complete, the SD command generation unit of the register setissues an SD command.

34 13 34 34 15 In memory write, the buffer memoryd loads data in the system memory, which is designated by the system address controllera, and temporarily holds the supplied data. The data held in the data bufferb is transferred to the SD memory cardin synchronism with an issued SD command.

34 15 13 34 In memory read, the buffer memoryd temporarily holds data loaded from the SD memory cardas a memory device in synchronism with an issued SD command, and transfers the data to a position in the system memory, which is designated by the system address controllera.

34 5 FIG. The operation of the ADMAusing the extended descriptor in the above-mentioned configuration will be explained below with reference to.

13 15 21 13 21 34 1 34 3 FIG. To perform data transfer between the system memoryand SD memory card, the host driverforms the extended descriptor as shown inin the system memory. The host driversets the start address of the first descriptor in registera_of the system address controllera.

21 34 34 34 1 34 2 11 When the host driveractivates the ADMAafter that, the system address controllera loads a second descriptor pointer (partial descriptor pointer) described at the head of the first descriptor (integrated descriptor), based on the start address of the first descriptor held in registera_, and holds the second descriptor pointer in registera_(ST).

34 12 Then, the system address controllera loads a second descriptor in the location indicated by the second descriptor pointer (ST).

34 34 33 14 15 13 The third descriptor (SD command descriptor) described at the head of the second descriptor is supplied to the SD command controllerc. The SD command controllerc writes data described in the third descriptor, in the SD command generation unit forming the register setof the SD host controller. Consequently, the SD command generation unit issues a command to the SD memory card(ST).

34 34 34 3 34 4 34 13 34 3 34 34 34 13 34 3 14 Subsequently, the system address controllera loads the fourth descriptor (system memory descriptor). The system address controllera holds the address and data length described in the fourth descriptor, in registera_(address) and registera_(length), respectively. In memory write, the system address controllera reads data from the system memoryby using the address in registera_(address) as the start address, and transfers the read data to the data bufferb. In memory read, the system address controllera writes data of the data bufferb in the system memoryby using the address in registera_(address) as the start address (ST).

13 34 34 In memory write, fragmented data supplied from the system memoryare combined into continuous data in the data bufferb. The fourth descriptor (system memory descriptor) is made up of a plurality of data each formed by a pair of the address and data length, and the ADMA performs data transfer between the system memory and data bufferb by repeating this.

34 15 15 13 34 After that, the ADMA transfers the data held in the data bufferb to the SD memory card(ST). The ADMA accesses data in the system memoryin synchronism with an issued command (read/write command), and data transfer between the memory and card is executed via the data bufferb by synchronizing them. The total data transfer amounts on the memory device side and system memory side must be set at the same value.

16 12 16 12 When data transfer based on one second descriptor is complete, whether the execution of the whole first descriptor is complete is determined (ST). If the execution of the whole first descriptor is not complete, the control returns to step ST, the next second descriptor is loaded in accordance with the partial descriptor pointer described in the first descriptor, and the above operation is executed (ST-ST). Each descriptor has the end bit in the above-mentioned attribute information Att, and the end position of the descriptor program can be designated by this end bit.

14 34 When the third descriptor is set in the register of the SD host controllerin accordance with the next second descriptor, an SD command is issued, and data is transferred in accordance with the fourth descriptor. In memory read, for example, after final data is transferred to the data bufferb, it is also possible to issue the SD command of the next transmission during DMA transfer to the system memory by reading the following third descriptor. In this case, the operation speed can further be increased because the command issuing time is hidden.

14 17 12 21 12 On the other hand, if all the contents described in the first descriptor have been executed, the SD host controllergenerates an ADMA completion interrupt (ST). This allows the CPU(host driver) to know the normal termination of the ADMA processing. If no error occurs, the host CPUneed not participate in transfer from the activation to the termination of the ADMA, so the host driver does not deteriorate the performance. In addition, the descriptor formation time has no influence on the transfer performance because the next descriptor can be prepared during data transfer.

A file system is instructed by the host driver to update information, when the transmission is completed. Thereby, the data transferred to the SD memory card is decided.

21 13 13 15 21 34 34 13 15 21 34 34 In the above embodiment, the host drivergenerates the extended descriptor in the system memoryin order to perform data transfer between the system memoryand SD memory card. This extended descriptor includes the first descriptor as a set of pointers indicating the positions of the second descriptors. When the host driveractivates the ADMA, the ADMAsequentially loads the contents of the second descriptors based on the contents of the start address of the first descriptor, and executes data transfer between the system memoryand SD memory cardin accordance with the contents of the third and fourth descriptors described in the second descriptors. Therefore, the host driverdoes not participate in data transfer executed by the ADMA. This enables the ADMAto perform high-speed data transfer.

34 33 13 15 21 Also, after being activated, the ADMAgenerates a command by setting the third descriptor in the SD command generation unit of the register set, and can execute data transfer between the system memoryand SD memory cardby using hardware alone. This makes the operation speed much higher than that when the host driverintervenes in the operation.

Furthermore, to operate the host driver during data transfer, the host driver is normally activated by an interrupt. Accordingly, the data transfer performance deteriorates if the interrupt response time is not negligible. However, the method of this embodiment can avoid the performance deterioration like this.

While certain embodiments have been described, these embodiments have been presented by way of example only, and are not intended to limit the scope of the inventions. Indeed, the novel embodiments described herein may be embodied in a variety of other forms; furthermore, various omissions, substitutions and changes in the form of the embodiments described herein may be made without departing from the spirit of the inventions. The accompanying claims and their equivalents are intended to cover such forms or modifications as would fall within the scope and spirit of the inventions.

Classification Codes (CPC)

Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.

Patent Metadata

Filing Date

January 8, 2024

Publication Date

September 15, 2026

Inventors

Akihisa Fujimoto

Want to explore more patents?

Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.

Citation & reuse

Analysis on this page is generated by Patentable — an AI-powered patent intelligence platform. AI-generated summaries, explanations, and analysis may be reused with attribution and a visible link back to the canonical URL below. Patent abstracts and claims are USPTO public domain.

Cite as: Patentable. “Memory system having high data transfer efficiency and host controller” (US-RE051032-B2). https://patentable.app/patents/US-RE051032-B2

© 2026 Patentable. All rights reserved.

Patentable is a research and drafting-assistant tool, not a law firm, and does not provide legal advice. Documents we generate are drafts for review by a licensed patent attorney.