KR101035732B1 - 메모리 액세스 인터페이스의 변환 방법 및 장치 - Google Patents

메모리 액세스 인터페이스의 변환 방법 및 장치 Download PDF

Info

Publication number
KR101035732B1
KR101035732B1 KR20080098385A KR20080098385A KR101035732B1 KR 101035732 B1 KR101035732 B1 KR 101035732B1 KR 20080098385 A KR20080098385 A KR 20080098385A KR 20080098385 A KR20080098385 A KR 20080098385A KR 101035732 B1 KR101035732 B1 KR 101035732B1
Authority
KR
South Korea
Prior art keywords
client
access
memory
information
access information
Prior art date
Application number
KR20080098385A
Other languages
English (en)
Other versions
KR20100039147A (ko
Inventor
임진혁
Original Assignee
주식회사 칩스앤미디어
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 주식회사 칩스앤미디어 filed Critical 주식회사 칩스앤미디어
Priority to KR20080098385A priority Critical patent/KR101035732B1/ko
Priority to PCT/KR2008/007656 priority patent/WO2010041793A1/en
Publication of KR20100039147A publication Critical patent/KR20100039147A/ko
Application granted granted Critical
Publication of KR101035732B1 publication Critical patent/KR101035732B1/ko

Links

Images

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/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing
    • 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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4009Coupling between buses with data restructuring

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Image Input (AREA)

Abstract

본 발명은 메모리 액세스 인터페이스를 변환하는 방법 및 장치에 관한 것이다. 본 발명의 메모리 액세스 인터페이스 변환 방법은, 제 1 클라이언트로부터 제 2 클라이언트의 메모리 영역에 대한 데이터 처리 명령을 수신하는 단계, 데이터 처리 명령으로부터 제 2 클라이언트의 메모리 영역에 대한 액세스 인터페이스 정보를 획득하는 단계, 및 액세스 인터페이스 정보를 이용하여 제 1 클라이언트의 액세스 정보를 제 2 클라이언트의 액세스 정보로 변환하는 단계를 포함한다. 본 발명에 의하면, 메모리에 대한 액세스 인터페이스가 서로 다른 각 클라이언트가 효과적으로 메모리를 공유할 수 있는 효과가 있다.
메모리, 클라이언트, 액세스, 데이터, 읽기, 쓰기, 주소, 엔디안니스, 변환

Description

메모리 액세스 인터페이스의 변환 방법 및 장치{METHOD AND APPARATUS FOR TRANSFORMATION OF MEMORY ACCESS INTERFACE}
본 발명은 메모리 액세스 인터페이스의 변환 방법 및 장치에 관한 것이다.
종래의 컴퓨터를 포함하는 제반 전자 장치들은 내부의 여러 클라이언트들, 예를 들면 CPU나 그래픽 장치 등으로 구성되어 있으며, 이 클라이언트들은 외부의 메모리를 통해 자신이 필요한 데이터를 읽어오거나, 기록해두곤 한다. 이러한 클라이언트들이 메모리를 이용하는 과정에서 크게 두 가지 문제점이 대두된다.
첫 번째 문제는, 메모리를 이용하는 과정에서 각 클라이언트는 데이터의 위치를 지정하기 위하여 논리 주소(Logical Address) 내지는 이 논리 주소로부터 변환된 선형 주소(Linear Address)를 사용하는데, 이 논리 주소 또는 선형 주소가 메모리상의 물리 주소(Physical Address)로 변환 내지는 매핑(mapping)되는 과정에서 각 클라이언트별로 서로 다른 변환 방법을 채택할 수 있다는 점이다. (이는 메모리의 실제 사양이나 그 밖의 제약에 따라 달라질 수 있다.) 예를 들어, 선형 주소를 물리 주소로 변환하는 경우, 물리 주소에 포함된 뱅크 주소와 행 주소의 순서가 서로 다른 것이 이에 해당한다. 한 클라이언트는 뱅크 주소를 행 주소보다 선행하여 위치시키는 방식을 채택하고, 다른 클라이언트는 행 주소를 뱅크 주소에 선행하여 위치시키는 방식을 채택할 수 있다.
두 번째 문제는 각 클라이언트의 엔디안니스(Endianness) 문제이다. 엔디안니스란 메모리에 저장되는 데이터의 바이트 순서를 나타내는 용어로서, 하위 번지에 LSB(Least Significant Bit)가 위치하면 리틀 엔디안(Little Endian), MSB(Most Significant Bit)가 위치하면 빅 엔디안(Big Endian)으로 지칭한다. 만약 하나의 시스템에서 각 클라이언트들이 하나의 엔디안만을 사용한다면 별 문제가 없겠지만, 근래에는 기술의 발전에 따라 서로 다른 엔디안을 갖는 클라이언트들이 하나의 시스템으로 통합되는 경우가 점점 늘고 있다. 따라서 한 클라이언트가 메모리를 통해 다른 클라이언트의 데이터를 참조하고자 하는 경우 등에 있어서 서로 다른 엔디안니스로 인한 문제가 발생할 수 있다.
이처럼 클라이언트 간의 주소 변환 방식 및 엔디안니스, 즉 메모리 액세스 인터페이스가 서로 달라 발생하는 문제점들을 해결하려는 목적으로, 시스템의 구성면에 있어서 종래 몇 가지 다른 구성들이 시도되어 왔다. 먼저 하나의 주소 변환 방법과 하나의 엔디안니스로 시스템 내부의 클라이언트들의 인터페이스를 일치시키는 방법이다. 즉, 하나의 주소 변환 방법과 하나의 엔디안니스를 결정한 뒤, 각 클라이이언트들이 이에 맞게 설계되어 있다면 그대로 사용하고, 그렇지 않다면 주소 변환기 및 엔디안니스 변환기와 같은 인터페이스 변환기를 각 클라이언트에 부가하 는 것이다. 하지만 이러한 방법의 경우 모든 클라이언트에 대해 주소 변환기 및 엔디안니스 변환기가 필요하다는 점, 시스템이 특정 주소 변환 방법 및 엔디안니스로만 설정되어 동작하므로 외부 변화에 유연하게 대처할 수 없다는 점, 각 클라이언트의 효율적인 동작을 보장할 수 없다는 점 등에서 문제가 있다.
만약 시스템 내에서 위와 같이 인터페이스 변환기 등 하드웨어적인 방법을 사용하는 것이 불가능한 경우에는 소프트웨어적인 방법을 사용할 수 밖에 없다. 즉, CPU 혹은 DSP(Digital Signal Processor) 등의 프로그래머블 코어(Programmable Core)에 주소나 엔디안니스를 변환해주는 프로그램을 설치함으로써 데이터를 읽거나 쓰는 것이다. 이러한 방법을 사용하는 경우에는 소프트웨어적인 접근법의 한계 상 각 클라이언트 혹은 전체 시스템의 효율적인 퍼포먼스를 기대하기가 어렵고, 프로그래머블 코어의 컴퓨팅 파워(Computing Power)를 소모하게 된다는 단점이 있다.
위에서 언급한 두 가지 문제점 외에, 두 시스템이 서로 다른 데이터 버스 폭(Data Bus Width)을 갖는 경우의 엔디안니스에 대한 문제점도 생각할 수 있다. 만약 32 비트(Bit) 데이터 버스를 갖는 장치와 64 비트 데이터 버스를 갖는 장치가 서로 연결된다고 가정하면, 64 비트의 데이터를 32 비트로 나눌 때 먼저 LSB가 먼저인지 MSB가 먼저인지에 대한 선택이 필요하고, 그 다음 32비트가 32비트로 매핑될 때 다시 엔디안니스의 변환이 필요하다. 예를 들어, 64 비트를 바이트(Byte) 단위로 나누어 8 바이트로 표기하고 ABCDEFGH라는 데이터를 32 비트 시스템에 전송한다고 가정하면, ABCD EFGH, DCBA HGFE, EFGH ABCD, HGFE DCBA 와 같이 총 4가지 경 우가 나올 수 있게 된다.
따라서 상술한 제반 문제점들을 해결함과 아울러 시스템의 실시간적인 변화에도 유연하게 대처할 수 있으며 보다 효율적인 동작을 보장할 수 있는 주소 변환 및 엔디안니스 변환 관리 방법이 요구된다.
따라서 본 발명은 하나의 시스템을 구성하고 있는 각 클라이언트들이 다른 클라이언트들의 주소 변환 방식 및 엔디안니스에 구애받지 않고 메모리를 통해 자신이 원하는 데이터를 읽거나 쓸 수 있도록 함으로써 각 클라이언트가 가장 극대화된 성능을 이끌어 내도록 동작할 수 있는 방법 및 장치를 제공하는 것을 일 목적으로 한다.
또한 본 발명은 시스템 운용자나 시스템 자체의 필요에 따라 실시간으로 각 클라이언트의 주소 변환 방식이나 엔디안니스의 설정을 변화시킬 수 있게 함으로써 시스템 외부 환경이나 내부 상태 또는 각 클라이언트의 변화에도 유연하게 대처할 수 있도록 하는 방법 및 장치를 제공하는 것을 다른 목적으로 한다.
또한 본 발명은 서로 다른 클라이언트들의 주소 방식 및 엔디안니스를 실시간으로 변환하여 줌으로써 다양한 클라이언트들의 다양한 주소 변환 방식 및 엔디안니스를 동시에 지원하는 방법 및 장치를 제공하는 것을 또 다른 목적으로 한다.
본 발명의 목적들은 이상에서 언급한 목적으로 제한되지 않으며, 언급되지 않은 본 발명의 다른 목적 및 장점들은 하기의 설명에 의해서 이해될 수 있고, 본 발명의 실시예에 의해 보다 분명하게 이해될 것이다. 또한, 본 발명의 목적 및 장점들은 특허 청구 범위에 나타낸 수단 및 그 조합에 의해 실현될 수 있음을 쉽게 알 수 있을 것이다.
이러한 목적을 달성하기 위한 본 발명은 메모리 액세스 인터페이스 변환 방법에 있어서, 제 1 클라이언트로부터 제 2 클라이언트의 메모리 영역에 대한 데이터 처리 명령을 수신하는 단계, 데이터 처리 명령으로부터 제 2 클라이언트의 메모리 영역에 대한 액세스 인터페이스 정보를 획득하는 단계 및 액세스 인터페이스 정보를 이용하여 제 1 클라이언트의 액세스 정보를 제 2 클라이언트의 액세스 정보로 변환하는 단계를 포함하는 것을 일 특징으로 한다.
또한 본 발명은 메모리 액세스 인터페이스 변환 방법에 있어서, 제 1 클라이언트로부터 제 2 클라이언트의 메모리 영역에 대한 데이터 읽기 명령을 수신하는 단계, 데이터 읽기 명령으로부터 제 2 클라이언트의 메모리 영역에 대한 액세스 인터페이스 정보를 획득하는 단계 및 액세스 인터페이스 정보를 이용하여 제 1 클라이언트의 액세스 정보를 제 2 클라이언트의 액세스 정보로 변환하는 단계를 포함하는 것을 다른 특징으로 한다.
또한 본 발명은 메모리 액세스 인터페이스 변환 방법에 있어서, 제 1 클라이언트로부터 제 2 클라이언트의 메모리 영역에 대한 데이터 쓰기 명령을 수신하는 단계, 데이터 쓰기 명령으로부터 제 2 클라이언트의 메모리 영역에 대한 액세스 인터페이스 정보를 획득하는 단계 및 액세스 인터페이스 정보를 이용하여 제 1 클라이언트의 액세스 정보를 제 2 클라이언트의 액세스 정보로 변환하는 단계를 포함하는 것을 또 다른 특징으로 한다.
또한 본 발명은 메모리 액세스 인터페이스 변환 장치에 있어서, 제 1 클라이 언트로부터 제 2 클라이언트의 메모리 영역에 대한 데이터 쓰기 명령을 수신하는 명령 수신부, 데이터 쓰기 명령으로부터 제 2 클라이언트의 메모리 영역에 대한 액세스 인터페이스 정보를 획득하고, 액세스 인터페이스 정보를 이용하여 제 1 클라이언트의 액세스 정보를 제 2 클라이언트의 액세스 정보로 변환하는 액세스 정보 변환부를 포함하는 것을 또 다른 특징으로 한다.
전술한 바와 같은 본 발명에 의하면, 하나의 시스템을 구성하고 있는 각 클라이언트들이 다른 클라이언트들의 주소 변환 방식 및 엔디안니스에 구애받지 않고 메모리를 통해 자신이 원하는 데이터를 읽거나 쓸 수 있도록 함으로써 각 클라이언트가 가장 극대화된 성능을 이끌어 내도록 동작할 수 있는 장점이 있다.
또한 본 발명은 시스템 운용자나 시스템 자체의 필요에 따라 실시간으로 각 클라이언트의 주소 변환 방식이나 엔디안니스의 설정을 변화시킬 수 있게 함으로써 시스템 외부 환경이나 내부 상태 또는 각 클라이언트의 변화에도 유연하게 대처할 수 있도록 하는 장점이 있다.
또한 본 발명은 서로 다른 클라이언트들의 주소 방식 및 엔디안니스를 실시간으로 변환하여 줌으로써 다양한 클라이언트들의 다양한 주소 변환 방식 및 엔디안니스를 동시에 지원하는 장점이 있다.
전술한 목적, 특징 및 장점은 첨부된 도면을 참조하여 상세하게 후술되며, 이에 따라 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 것이다. 본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 상세한 설명을 생략한다.
이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시예를 상세히 설명하기로 한다. 도면에서 동일한 참조부호는 동일 또는 유사한 구성요소를 가리키는 것으로 사용된다.
본 발명에서, '메모리 액세스 인터페이스'라는 용어는 각 클라이언트가 메모리에 액세스하기 위한 여러가지 규약을 의미하는 것이다. 메모리 액세스 인터페이스는 각 클라이언트의 주소 변환 방식 또는 주소 표현 방법과 같은 '메모리 액세스 정보' 및 엔디안니스와 같은 '데이터의 타입'을 포함하는 용어이다.
또한 본 발명에서 어떤 주소의 특정 비트를 나타낼 때 [3:0]과 같은 표현을 사용하는데, 이는 전체 비트 중 0번 비트 내지 3번 비트의 총 4비트를 나타내는 표현이다.
도 1은 본 발명의 실시예에 의한 메모리 액세스 인터페이스 변환 장치와 클라이언트, 그리고 메모리 간의 연결 관계를 설명하기 위한 구성도이다.
도 1에서, 제 1 클라이언트(102), 제 2 클라이언트(104) 및 제 3 클라이언트(106)들은 각각 메모리(110)를 이용하여 데이터를 읽거나 쓴다. 본 발명에서 클라이언트란 하나의 시스템을 구성하면서 메모리(110)를 이용하여 데이터를 읽고 쓰 는 구성 요소들, 즉 CPU, 비트 스트림(Bit-stream) 모듈, 그래픽 모듈 등을 가리킨다. 도 1에서는 편의상 제 3 클라이언트(106)까지만을 나타내었으나, 클라이언트의 수는 이 보다 더 많아질 수 있음은 물론이다.
메모리(110)에는 도 1에 나타난 바와 같이 각 클라이언트 별로 저장 영역이 할당된다. 예를 들어, 메모리(110)의 크기가 256MB(Mega Byte) 라면, CPU의 데이터는 64MB, 비트스트림 데이터와 그래픽 데이터는 각각 32MB, 비디오 및 보조(Auxilliary) 데이터는 각각 64MB를 사용하도록 설정될 수 있을 것이다. 또한 이러한 각 클라이언트 별 저장 영역 설정에 따라 실제 메모리에 접근하기 위한 주소 또한 결정될 수 있다.
이와 같이 제 1 클라이언트(102), 제 2 클라이언트(104) 및 제 3 클라이언트(106)는 각각 메모리(110)에 액세스하여 데이터의 읽기 또는 쓰기를 수행하게 된다. 그런데 이러한 과정에서 각 클라이언트 별 메모리 액세스 인터페이스, 예를 들면 각 메모리 영역에 대한 메모리 액세스 정보(주소 변환 방식 등을 포함하는)나 각 클라이언트가 사용하는 엔디안니스 등이 서로 다를 수 있게 된다. 따라서 어느 한 클라이언트가 다른 클라이언트의 메모리 영역에 액세스하여 데이터를 읽거나 쓰고자 하는 경우, 이러한 메모리 액세스 인터페이스의 차이로 인하여 문제점이 발생할 수 있음은 앞서 설명한 바 있다.
본 발명의 실시예에 의한 메모리 액세스 인터페이스 변환 장치(108)는 이처럼 어느 클라이언트가 메모리(110)에 액세스하여 상이한 메모리 액세스 인터페이스를 갖는 다른 클라이언트의 메모리 영역에 액세스하여 데이터를 읽거나 쓰고자 하 는 경우, 각 클라이언트와 메모리와의 사이에 위치하여 메모리 액세스 인터페이스를 변환해 주는 역할을 수행한다.
여기서 본 발명에 대한 보다 상세한 이해를 돕기 위하여 각 클라이언트의 메모리 액세스 정보, 그 중에서도 각 클라이언트별 주소 변환 방식에 대하여 예를 들어 설명한다.
통상 선형 주소 표기 방법을 사용하는 클라이언트들의 주소는 실제 메모리에 액세스할 때, 그 메모리의 실제 사양 혹은 제약에 따라 여러 가지 방법으로 변환될 수 있다. 예를 들어 실제 메모리가 외부의 SDRAM일 경우를 생각해 보면, SDRAM의 주소는 뱅크 주소(Bank Address : BA), 열 주소(Row Address : RA) 및 행 주소(Column Address)의 세 컴포넌트를 갖는다. 따라서 선형 주소를 그 형식을 최대한 그대로 유지하는 선에서 SDRAM의 물리 주소로 변환하는 방법으로써 통상 다음의 두 가지 방법이 사용되고 있다.
A. LA => BA : RA : CA
B. LA => RA : BA : CA
(여기서, LA는 Linear Address 를 나타냄.)
예를 들어, LA가 22 비트라 가정하고, BA가 2 비트, RA가 12 비트, CA가 8 비트라고 가정하면, A. 형식의 경우에는 LA[21:20] => BA[1:0], LA[19:8] => RA[11:0], LA[7:0] => CA[7:0]로 매핑되고, B. 형식의 경우에는 LA[21:10] => RA[11:0], LA[9:8] => BA[1:0], LA[7:0] => CA[7:0]로 매핑될 것이다. 따라서 CA가 8 비트라면, A. 형식의 경우에는 LA의 LSB로부터 9번째 비트까지가 RA의 LSB로 매핑될 것이고, B. 형식의 경우에는 LA의 LSB로부터 9번째 비트까지가 BA의 LSB에 매핑될 것이다.
A. 형식의 경우 SDRAM의 뱅크 하나를 하나의 서브 메모리(Sub Memory)로 간주할 수 있다. 로우 파워(Low Power) 특성이 중요한 경우에는 뱅크 하나 하나를 따로 온/오프(on/off) 시킬 수 있는 A. 형식이 유리하다. A. 형식은 그 외에도 메모리를 이용하는 클라이언트의 수가 적은 경우 각 클라이언트에 서로 다른 뱅크를 매핑하여 사용하는 경우 등에 채택된다.
B. 형식은 A. 형식보다 효율적인 메모리의 동작을 원할 경우 사용된다. 즉 뱅크 하나 하나가 각각 프리 차지/로우 오픈(pre-charge/row-open)이 되는 SDRAM의 특성상, 잦은 프리 차지/로우 오픈을 가급적 억제하기 위해 뱅크 교환(Bank Change)을 적극적으로 사용하기 때문에 ― 이를 뱅크 인터리빙(Bank-interleaving)이라고 한다 ― 이 경우 B. 형식은 A. 형식보다 높은 메모리 대역폭을 얻을 수 있다. 그러므로, 메모리 대역폭이 중요한 요소인 경우에는 B. 형식이 A. 형식보다 선호된다.
선형 주소가 필요하지 않은 경우 B. 형식은 뱅크 인터리빙을 보다 더 극대화할 수 있는 조금 더 극단적인 형식으로 발전할 수 있다. 특히 데이터가 1차원적으로 배열되지 않고 2차원적으로 배열되는 경우 사용되는 방식으로 통상 2-D 맵 혹은 타일드 맵(Tiled map)이라 불리는 형식이 이에 해당한다. 이러한 2-D map은 통상 각각의 응용 제품에서 제안되는 방식으로 변환 공식을 만들어 사용하기 때문에 다양한 변환 방식이 제안되어 사용되고 있다. 아래에 MPEG 비디오 디코더에서 사용되는 변환 방식의 예를 보인다.
C. Display address (x[9:0], y[9:0]) => SDRAM address (RA[11:0], BA[1:0], CA[7:0])
- x[2:0] => CA[2:0]
- y[2:0] => CA[5:3]
- x[3] => BA[0]
- y[3] => BA[1]
- x[5:4] => CA[7:6]
- x[10:6] => RA[4:0]
- y[10:4] => RA[11:5]
위에서 서술한 이러한 변환 공식 또는 매핑은 하나의 예일 뿐이며, 실제 메모리의 사용에 있어서는 보다 다양한 방법들이 사용될 수 있다.
도 1에서, 메모리 액세스 인터페이스 변환장치(108)는 이렇게 클라이언트 별로 서로 다른 다양한 메모리 액세스 인터페이스를 변환시켜 줌으로써 한 클라이언트가 다른 클라이언트의 메모리 영역에서 메모리 액세스 인터페이스에 구애받지 않고 데이터를 읽고 쓸 수 있게 해 주는 역할을 수행한다.
도 2는 본 발명의 실시예에 의한 메모리 액세스 인터페이스 변환장치(108)의 구성을 설명하기 위한 구성도이다.
도 2에서, 메모리 액세스 인터페이스 변환장치(108)는 명령 수신부(202), 컨트롤 레지스터(204), 태그 메모리(206), 액세스 정보 변환부(208), 데이터 타입 변환부(210) 및 명령 처리부(212)를 포함할 수 있다. 또한 액세스 정보 변환부(208)에는 액세스 정보 분할부(208a)와 액세스 정보 병합부(208b)가 포함될 수 있다.
명령 수신부(202)는 제 1 클라이언트로부터 제 2 클라이언트의 메모리 영역에 대한 데이터 처리 명령을 수신하는 역할을 한다. 본 발명의 실시예에서, 데이터 처리 명령이란 데이터 읽기(read) 명령 또는 데이터 쓰기(write) 명령을 포함한다. 본 발명의 실시예에서, 데이터 처리 명령은 (0x1236, 읽기, 3) 또는 (0x1234, 쓰기, 5)와 같이 (선형주소, 읽기 또는 쓰기 명령, 읽기 또는 쓰기 횟수)의 형식을 가질 수 있다. 예를 들어 (0x1236, 읽기, 3)의 경우 0x1236에 해당하는 위치에서 시작하여 연속되는 데이터 3 바이트를 읽어오거나, 연속되는 데이터를 3회 읽어오라는 뜻으로 해석될 수 있다. 또한 데이터 처리 명령에 쓰기 명령이 포함되어 있을 경우 명령 수신부(202)는 제 1 클라이언트로부터 데이터 처리 명령과 함께 제 1 클라이언트가 메모리에 쓰고자 하는 데이터를 수신받을 수도 있을 것이다.
컨트롤 레지스터(204)는 명령 수신부(202)를 통해 수신된 데이터 처리 명령의 수행을 위하여 액세스 정보 변환부(208), 데이터 타입 변환부(210) 등에 대한 제어를 담당한다. 후술할 본 발명의 실시예에서, 컨트롤 레지스터(204)는 데이터 처리 명령으로부터 획득된 제 2 클라이언트의 메모리 영역에 대한 액세스 인터페이 스 정보를 바탕으로 미리 설정된 각 클라이언트별 메모리 액세스 인터페이스 정보를 참조하고, 이를 통해 제 1 클라이언트의 액세스 정보를 제 2 클라이언트의 액세스 정보로 변환하는 역할을 한다. 따라서 액세스 정보 변환부(208)에 의한 주소 변환 등 액세스 정보의 변환이나, 데이터 타입 변환부(210)에 의한 엔디안니스 변환 등 데이터 타입 변환은 이 컨트롤 레지스터(204)에 미리 설정된 메모리 액세스 인터페이스 정보를 참조하여 이루어 질 수 있다.
태그 메모리(206)는 일종의 임시 저장 공간의 역할을 하는데, 명령 수신부(202)를 통해 수신된 데이터 처리 명령에 포함된 제 2 클라이언트의 메모리 영역에 대한 액세스 인터페이스 정보를 저장한다. 예를 들면, 본 발명의 실시예에서 데이터 처리 명령에 포함된 선형 주소의 상위 여섯 비트에는 해당하는 제 2 클라이언트의 메모리 영역의 주소 변환 정보 및 엔디안니스 정보가 포함되어 있는데, 태그 메모리(206)는 명령 수신부(202)가 데이터 처리 명령을 수신한 뒤 이 상위 여섯 비트를 저장할 수 있다. 이렇게 임시 저장 공간이 필요한 이유는 명령 수신부(202)가 데이터 처리 명령을 수신하는 시점과 액세스 정보 변환부(208) 또는 데이터 타입 변환부(210)가 동작하는 시간에 차이가 생길 수 있기 때문에, 이 시간 차이로 인해 생기는 액세스 인터페이스 정보의 유실 등 오동작을 막기 위한 것이다. 태그 메모리(206)에 액세스 인터페이스 정보를 저장함으로써, 어느 하나의 데이터 처리 명령을 처리하는 도중에 새로운 데이터 처리 명령이 수신되어 이를 동시에 처리하게 되더라도 이 태그 메모리(206)에 저장된 액세스 인터페이스 정보를 참조하여 이전 데이터 처리 명령의 수행을 오류 없이 마칠 수 있게 된다.
액세스 정보 변환부(208)는 명령 수신부(202)에 의해 수신된 데이터 처리 명령으로부터 제 2 클라이언트의 메모리 영역에 대한 액세스 인터페이스 정보를 획득하고, 이 액세스 인터페이스 정보를 이용하여 제 1 클라이언트의 액세스 정보를 제 2 클라이언트의 액세스 정보로 변환하는 역할을 한다. 예를 들면, 액세스 정보 변환부(208)는 제 1 클라이언트로부터 데이터 처리 명령을 받은 뒤, 데이터 처리 명령에 포함된 선형 주소의 상위 여섯 비트로부터 제 2 클라이언트의 메모리 영역에서 사용하고 있는 주소 방식 및 엔디안니스에 대한 정보를 얻을 수 있다. 이 정보를 이용하여 액세스 정보 변환부(208)는 데이터 처리 명령의 선형 주소를 제 2 클라이언트 메모리 영역에 액세스할 수 있는 물리 주소로 변환할 수 있다.
액세스 정보 변환부(208)는 액세스 정보 분할부(208a) 또는 액세스 정보 병합부(208b)를 포함할 수 있다. 전술한 바와 같이 본 발명의 실시예에서는 (0x1236, 읽기, 10)과 같은 형식의 데이터 처리 명령이 사용될 수 있다. 그런데 이렇게 하나의 주소를 지정하고 그 주소와 연속적인 영역에 대한 동작(읽기 또는 쓰기)을 요구하게 되면, 실제 메모리에서는 그 동작을 지원하지 못하는 경우가 발생할 수도 있다. 이는 그 연속적인 영역에 대한 동작들의 횟수(또는 바이트 수)가 너무 크거나, 실제 메모리에서 한 번에 지정할 수 있는 주소의 경계를 넘어가게 되는 경우에 발생할 수 있다. 액세스 정보 분할부(208a)는 이러한 경우가 발생하면 데이터 처리 명령의 액세스 정보를 분할함으로써 메모리 내에서 데이터 처리 명령이 적절하게 수행할 수 있도록 하는 역할을 한다. 예를 들어 (0x89AB, 읽기, 10)과 같은 명령에 있어서 메모리가 한 번에 5바이트씩 읽는 것이 데이터 명령 수행에 적합하도록 되 어 있다면 액세스 정보 분할부(208a)는 이 데이터 처리 명령을 (0x89AB, 읽기, 5) 및 (0x89B0, 읽기, 5)와 같은 식으로 분할하게 된다.
액세스 정보 분할부(208a)에 의해 분할된 액세스 정보는 액세스 정보 변환부(208)에 의해 각각 제 2 클라이언트의 액세스 정보로 변환된다. 그런데 이렇게 변환된 각각의 제 2 클라이언트 액세스 정보가 다시 하나로 합쳐지는 것이 바람직한 경우도 발생할 수 있다. 예를 들어, 분할된 후 변환된 액세스 정보가 (0x1234, 읽기, 2) 및 (0x1236, 읽기, 3)와 같은 식으로 구성되어 있다면, 이 액세스 정보는 (0x1234, 읽기, 5)와 같은 액세스 정보로 다시 병합될 수 있다. 따라서 액세스 정보 병합부(208b)는 이러한 경우 분할되고 변환된 액세스 정보를 다시 하나의 액세스 정보로 병합하는 역할을 한다. 다만, 이렇게 액세스 정보를 다시 병합하는 동작은 결과적으로 메모리 시스템의 응답 시간을 길게 하는 부작용을 일으킬 수도 있다. 따라서 액세스 정보 병합부(208b)는 필요한 경우에만 위와 같은 액세스 정보 병합 동작을 수행할 수도 있다.
데이터 타입 변환부(210)는 데이터 처리 명령에 의해 처리될 데이터의 타입을 데이터 처리 명령으로부터 획득된 액세스 인터페이스 정보를 이용하여 적절하게 변환하는 역할을 한다. 만약 데이터 처리 명령이 읽기 명령을 포함한다면, 데이터 타입 변환부(210)는 명령 처리부(212)에 의해 읽어진 데이터의 타입, 예를 들면 데이터의 엔디안니스를 제 1 클라이언트가 사용하는 엔디안니스에 맞도록 변환한다. 왜냐하면 명령 처리부(212)에 의해 제 2 클라이언트의 메모리 영역에서 읽어진 데이터는 제 2 클라이언트가 사용하는 엔디안니스를 가지고 있을 수 있기 때문이다. 이와 유사하게, 데이터 처리 명령이 쓰기 명령을 포함하고 있다면, 이 데이터 처리 명령에 의해 제 2 클라이언트의 메모리 영역에 쓰여질 데이터는 제 1 클라이언트가 사용하는 엔디안니스를 갖고 있을 것이다. 따라서 이 경우 데이터 타입 변환부(210)는 쓰기 명령에 의해 쓰여질 데이터의 엔디안니스를 쓰기 명령 수행 전에 미리 제 2 클라이언트가 사용하는 엔디안니스로 변환하는 역할을 수행할 수 있을 것이다.
명령 처리부(212)는 액세스 정보 변환부(208)에 의해 변환된 제 2 클라이언트의 액세스 정보를 이용하여 제 2 클라이언트의 메모리 영역에 액세스하고, 그 액세스된 메모리 영역에서 데이터 처리 명령, 즉 데이터 읽기 또는 데이터 쓰기를 수행한다. 만약 읽기 명령이라면 명령 처리부(212)는 읽은 데이터를 제 1 클라이언트에 전달하는 역할 또한 수행할 수 있을 것이다.
도 3은 본 발명에 의한 메모리 액세스 인터페이스 변환 방법의 실시예를 설명하기 위한 실제 메모리 구성 및 메모리 맵을 나타내는 도면이다. 도 3을 참고하여 실제 본 발명에 의한 메모리 액세스 인터페이스 변환 방법이 어떻게 이루어지는지 보다 상세하게 설명한다.
도 3에서, 메모리(304)는 다수의 클라이언트와 연결되어 있으며, 각 클라이언트가 사용하는 영역(304a 내지 304e)이 메모리(304)에 할당되어 있다. 도 3에 나타난 바와 같이, 본 발명의 실시예에서는 메모리(304)에 CPU 코드 및 데이터 영역(304a), 비트 스트림 데이터 영역(304b), 그래픽 데이터 영역(304c), 비디오 데이터 영역(304d) 및 보조 데이터 영역(304e)이 할당되어 있다.
본 발명의 실시예에서는 메모리의 크기가 256MB라고 가정한다. 또한 여기서 CPU 코드 및 데이터 영역(304a)에 64MB, 비트 스트림 데이터 영역(304b)에 32MB, 그래픽 데이터 영역(304c)에 32MB, 비디오 데이터 영역(304d)에 64MB, 그리고 보조 데이터 영역(304e)에 64MB가 각각 할당되어 있다고 가정한다. 이러한 메모리(304)에 액세스하기 위해서는 28 비트 길이의 주소가 사용될 수 있는데, 이 28 비트의 주소 중 상위 3 비트, 즉 [27:25]에 나타나는 0 ~ 7의 값으로 각 영역(304a 내지 304e)을 나타내는 것이 가능하다. 즉, 어떤 선형 주소의 상위 3 비트의 값이 0 또는 1인 경우에는 CPU 코드 및 데이터 영역(304a), 2인 경우에는 비트 스트림 데이터 영역(304b), 3인 경우에는 그래픽 데이터 영역(304c), 4 또는 5인 경우에는 비디오 데이터 영역(304d), 6 또는 7인 경우에는 보조 데이터 영역(304e)을 각각 가리키게 될 것이다. 이러한 설정은 통상 실시간적으로 시스템 레벨에서 지정될 수 있으며 단지 하나의 예일 뿐임을 주의해야 한다.
본 발명의 실시예에서는, 위와 같은 28 비트의 주소에 덧붙여 각 주소가 가리키는 메모리 영역이 어떠한 주소 변환 방식과 엔디안니스를 사용하는지에 대한 정보, 즉 액세스 인터페이스 정보를 나타내는 추가적인 비트를 사용하게 된다. 만약 추가적인 3 비트, 즉 [30:28]비트를 더 사용하게 된다면, 이 3비트가 나타내는 0 ~ 7의 값으로써 다수의 서로 다른 액세스 인터페이스 정보를 나타낼 수 있다. 예를 들어, 0은 BA:RA:CA 방식 및 빅 엔디안을, 1은 BA:RA:CA 방식 및 리틀 엔디안을, 2는 RA:BA:CA 방식 및 빅 엔디안을, 3은 RA:BA:CA 방식 및 리틀 엔디안을 사용한다는 것을 나타내고, 4는 그래픽 데이터를 위해 특화된 2-D 맵을, 5는 비디오 데 이터를 위해 특화된 2-D 맵을 각각 나타내도록 한다.
이러한 메모리(304)의 할당 및 액세스 인터페이스 정보의 설정을 이용한 결과가 도 3의 메모리 맵(302)이다. 위와 같은 설정들을 따른다면, 각 액세스 인터페이스 정보에 해당하는 영역(302a 내지 302f)은 메모리(304)와 같이 256MB의 동일한 크기를 가지며, 각 영역(302a 내지 302f)마다 메모리(304)의 모든 영역(304a 내지 304e)이 포함되는 메모리 맵(302)을 얻을 수 있게 된다. 예를 들면 도 3에 나타난 바와 같이, BA:RA:CA 방식 및 빅 엔디안 영역(302a)에 메모리(304)의 모든 영역(304a 내지 304e)이 포함될 것이며, 이는 메모리 맵(302)의 나머지 영역(302b 내지 302f)에 대해서도 마찬가지이다. (도 3에서는 편의상 302a 영역에 대해서만 이를 나타내었다.)
이러한 메모리 맵(302) 및 액세스 인터페이스 정보 설정을 바탕으로 하여 이제 본 발명에 의한 메모리 액세스 인터페이스 변환 방법의 실시예에 대하여 설명한다.
본 발명의 실시예에서, 각 클라이언트는 서로 다른 주소 변환 방식 및 엔디안니스를 사용하도록 설정되어 있다. 예를 들어, CPU는 RA:BA:CA 방식 및 빅 엔디안을 이용하고, 비트 스트림 엔진은 RA:BA:CA 및 리틀 엔디안을 이용하며, 비디오 엔진은 2-D Map #2를 이용한다고 하자. 그러면 각 클라이언트들은 메모리 액세스를 위한 주소를 생성할 때, 도 3의 메모리 맵(302)을 통해 설명한 바와 같이 [30:28]에 각각 자신이 사용하는 액세스 인터페이스 정보에 해당하는 2, 3, 5를 사용하게 될 것이다. 또한 앞에서 메모리(304) 영역을 도 3의 304a 내지 304e와 같이 나누고 그에 대한 상위 3 비트의 값을 지정한 바 있으므로, 각 클라이언트는 [27:25]에 각각 0 또는 1, 2, 4 또는 5의 값을 가지게 될 것이다. 따라서, 어떤 클라이언트가 메모리(304)에서 CPU 코드 및 데이터 영역(304a) 액세스하기 위해서는 [30:25]가 010000 혹은 0100001을 갖는 주소를 사용하게 될 것이고, 비트 스트림 데이터 영역(304b)에 대한 액세스를 위해서는 [30:25]에 011010 이, 비디오 데이터 영역(304d)에 대한 액세스를 위해서는 [30:25]에 101100 혹은 101101 이 각각 나타나게 될 것이다.
이러한 설정을 전제로 먼저 CPU가 비트 스트림 엔진이 저장한 데이터를 읽는 과정을 설명한다. CPU는 비트 스트림 엔진이 저장한 데이터를 읽기 위하여 메모리에 (0x34001234, 읽기, 30)의 데이터 처리 명령을 보낸다. 그러면 메모리 액세스 인터페이스 변환장치(108)의 명령 수신부(202)는 이 명령을 수신하게 될 것이다.
이 데이터 처리 명령에 포함된 선형 주소 0x34001234를 이진수로 표현하면 0011_0100_0000_0000_0001_0010_0011_0100 이 된다. 액세스 정보 변환부(208)는 이 선형 주소를 통해 CPU가 액세스하고자 하는 비트 스트림 엔진 영역에서 사용하는 메모리 액세스 인터페이스를 알 수 있다. 즉, 이 선형 주소의 [30:25] 비트가 011010 이므로, 컨트롤 레지스터(204)가 보유하고 있는 각 클라이언트 별 메모리 액세스 인터페이스 또는 메모리 맵(302)을 참조하는 등의 방법을 통해, 액세스 정보 변환부(208)는 CPU가 액세스하고자 하는 메모리 영역이 비트 스트림 데이터 영역이며(하위 3비트인 010), 이 영역은 RA:BA:CA 방식 및 리틀 엔디안을 사용한다는 것(상위 3비트인 011)을 알 수 있다. 따라서 이러한 정보를 가지고 액세스 정보 변 환부(208)는 CPU의 데이터 처리 명령에 포함된 선형 주소를 비트 스트림 데이터 영역에 액세스할 수 있는 주소로 변환할 수 있다.
액세스 정보 변환부(208)에 의해 이러한 주소 변환이 일어나기 전에, 액세스 정보 변환부(208)에 포함된 액세스 정보 분할부(208a)에 의해서 액세스 정보의 분할이 수행될 수 있다. 만약 메모리(304)가 16 바이트 단위로 데이터를 처리하는 것이 적절하도록 설계되어 있는 경우라면, 액세스 정보 분할부(208a)는 (0x34001234, 읽기, 30)의 명령을 (0x34001234, 읽기, 12), (0x34001240, 읽기, 16) 및 (0x34001250, 읽기, 2)의 세 개 명령으로 나눌 수 있을 것이다.
이제 액세스 정보 변환부(208)는 이 CPU의 액세스 정보, 즉 선형 주소를 제 2 클라이언트의 액세스 정보로 변환하게 된다. 예를 들어 메모리(304)가 4-Bank, 256-Column, 16 비트 SDRAM이라고 하면, 0x34001234는 이진수로 0011_0100_0000_0000_0001_0010_0011_0100 이므로 BA:1, RA:2, CA:0x1A로 바뀔 것이다. 다음 주소인 0x34001240을 마찬가지로 변환하면 BA:1, RA:2, CA:0x20으로 바뀌고, 0x34001250은 BA:1, RA:2, CA:0x28로 바뀐다. 결국 명령 수신부(202)에 의해 수신된 데이터 처리 명령은 (BA:1 RA:2 CA:0x1A, 읽기, 12), (BA:1 RA:2 CA:0x20, 읽기, 16), (BA:1 RA:2 CA:0x28, 읽기, 2)로 바뀌게 될 것이다.
이제 명령 처리부(212)는 이 변환된 데이터 처리 명령을 통해 데이터 읽기를 수행할 수 있다. 이 명령들은 각각 지정된 주소로부터 연속하여 12 바이트, 16 바이트, 2 바이트를 읽어오라는 것으로서, 각각 처리되어도 무방하다. 그러나 각 주소를 살펴보면 뱅크 주소와 행 주소가 서로 같고 단지 열 주소만이 변하고 있음을 알 수 있다. 따라서 액세스 정보 병합부(208b)는 이렇게 분할 후 변환 과정을 거친 데이터 처리 명령의 주소들이 서로 병합될 수 있는지 여부를 판단하고 필요한 경우 이 주소들을 병합하여 하나의 데이터 처리 명령으로 만든다. 이는 앞서 언급한 바와 같이 시스템의 응답 속도를 낮추는 결과를 가져올 수 있기 때문에 반드시 필요한 단계는 아니다.
명령 처리부(212)는 이제 변환된 데이터 처리 명령에 포함된 비트 스트림 데이터 영역의 액세스 정보, 즉 변환된 주소를 가지고 메모리(304)의 비트 스트림 데이터 영역에 액세스한다. 그리고 데이터 처리 명령에 따라 데이터를 읽게 된다. 명령 처리부(212)는 읽은 데이터를 CPU에 전달하게 되는데, 이 데이터는 비트 스트림 데이터 영역에 저장되어 있었던 데이터이므로 CPU가 사용하는 엔디안니스와는 다른 엔디안니스를 가질 수 있다. 여기서 데이터 타입 변환부(210)는 명령 처리부(212)가 읽은 데이터의 엔디안니스를 변환하는 역할을 한다.
데이터 타입 변환부(210)가 상기 데이터의 엔디안니스를 변환하려면 CPU 및 비트 스트림 엔진이 사용하는 엔디안니스에 관한 정보를 얻는 것이 필요한데, 이는 여러가지 방법을 통하여 가능하다. 우선 명령 수신부(202)는 데이터 처리 명령을 수신할 때, CPU의 ID 확인 등을 통해 이 데이터 처리 명령을 보낸 주체가 CPU라는 것을 알 수 있다. 따라서 각 클라이언트의 엔디안니스 정보를 갖고 있는 컨트롤 레지스터(204)를 이용하여 CPU의 엔디안니스를 확인할 수 있다. 또한 액세스 정보 변환부(208)가 획득한 비트 스트림 데이터 영역에 대한 액세스 인터페이스 정보를 통해 비트 스트림 엔진의 엔디안니스를 확인할 수 있는데, 여기서 액세스 인터페이스 정보는 태그 메모리(206)를 통해 확인할 수도 있다.
명령 처리부(212)는 이렇게 데이터 타입 변환부(210)에 의해 엔디안니스가 변환된 데이터를 CPU에 전달하고, 이로써 CPU로부터의 데이터 처리 명령의 수행이 완료된다. 결과적으로 CPU는 메모리(304)에서 어떠한 변환 과정을 거쳤는지와 관계 없이 원하는 데이터를 메모리(304)로부터 읽어올 수 있다.
이제 메모리(304)로부터 읽은 데이터를 처리한 CPU가 해당 데이터를 처리한 후, 처리한 데이터 30 바이트를 2-D Map #2 영역에 저장하는 과정을 살펴본다.
먼저 명령 수신부(202)는 CPU로부터 (0x58001234, 쓰기, 30)의 데이터 처리 명령을 수신한다. 데이터 처리 명령에 포함된 선형 주소 0x58001234는 이진수로 나타내면 0101_1000_0000_0000_0001_0010_0011_0100 이 될 것이다. 액세스 정보 변환부(208)는 이 선형 주소의 [30:25] 비트인 101110을 이용하여 CPU가 액세스하고자 하는 메모리 영역이 2-D Map #2 영역이라는 것과(하위 비트인 110), 이 2-D Map #2 영역에서는 비디오 장치를 위해 특화된 주소 변환 방법을 사용한다는 것(상위 비트인 101)을 알 수 있다. 따라서 이러한 정보를 가지고 액세스 정보 변환부(208)는 CPU의 데이터 처리 명령에 포함된 선형 주소를 2-D Map #2 영역에 액세스할 수 있는 주소로 변환할 수 있다.
액세스 변환 정보부(208)에 의해 이러한 주소 변환이 일어나기 전에, 액세스 변환 정보부(208)에 포함된 액세스 정보 분할부(208a)에 의해서 액세스 정보의 분할이 수행될 수 있다. 만약 메모리(304)가 16 바이트 단위로 데이터를 처리하는 것이 적절하도록 설계되어 있는 경우라면, 액세스 정보 분할부(208a)는 (0x58001234, 쓰기, 30)의 쓰기 명령을 (0x58001234, 쓰기, 12), (0x58001240, 쓰기, 16), (0x58001250, 쓰기, 2)의 세 개 명령으로 나눌 수 있다. 이 분할된 주소를 2-D Map #2 의 액세스에 적합하게 변환하는 공식이 "x[3:1] => CA[2:0], y[4:0] => CA[7:3], x[4] => BA[0], y[5] => BA[1], x[9:5] => RA[4:0], y[9:6] => RA[8:5]" 라고 한다면 주소 변환은 다음과 같이 될 것이다.
먼저 0x58001234는 0101_1000_0000_0000_0001_0010_0011_0100 이므로 y[9:0]은 00_0000_0100 이 되고 x[9:0]은 10_0011_0100 이 되므로 BA[1:0]은 01, 즉 1이 되고 RA[8:0]은 0_0001_0001, 즉 0x011이 되고 CA[7:0]은 0010_0010, 즉 0x22가 된다. 같은 식으로 0x58001240을 변환해 보면 BA는 0, RA는 0x12, CA는 0x20이 된다. 또한 0x58001250는 BA는 1, RA는 0x12, CA는 0x20로 변환된다. 따라서 CPU로부터 수신된 데이터 처리 명령은 (BA:1 RA:0x11 CA:0x22, 쓰기, 12), (BA:0 RA:0x12 CA:0x20, 쓰기, 16), (BA:1 RA:0x12 CA:0x20, 쓰기, 2)로 바뀌게 된다. (여기서, x[0]을 참조하지 않은 이유는 주소가 바이트 단위인데, 메모리는 16 비트 단위로 데이터를 처리하기 때문이다.)
이제 명령 처리부(212)는 이 변환된 데이터 처리 명령을 통해 데이터 읽기를 수행할 수 있다. 그런데 변환된 세 주소를 살펴보면 뱅크 주소 및 행 주소가 모두 바뀌고 있음을 알 수 있다. 따라서 이러한 경우에는 주소의 병합이 불가능하기 때문에 액세스 정보 병합부(208b)는 분할된 후 변환된 이 주소들의 병합을 수행하지 않을 것이다.
CPU의 데이터 처리 명령은 쓰기 명령이기 때문에, 명령 수신부(202)는 CPU로 부터 데이터 처리 명령과 함께 2-D Map #2 영역에 쓸 데이터를 수신받을 수 있다. 이 데이터는 CPU로부터 수신받은 것이므로 CPU가 사용하는 엔디안니스를 갖고 있을 것이다. 따라서 만약 해당 데이터의 엔디안니스와 2-D Map #2 영역의 엔디안니스가 서로 다르다면, 데이터를 2-D Map #2 영역에 쓰기 전 데이터 타입 변환부(210)에 의한 엔디안니스 변환이 이루어질 수 있을 것이다. 엔디안니스 변환에 대해서는 앞에서 설명한 바 있으므로 자세한 설명은 생략한다.
주소 변환 및 엔디안니스 변환이 끝나면, 명령 처리부(212)는 변환된 주소를 이용하여 2-D Map #2 영역에 액세스하고 해당 데이터를 해당 위치에 씀으로써 CPU로부터의 데이터 처리 명령 수행을 완료한다.
지금까지 본 발명의 실시예를 통해 설명된 데이터의 읽기 명령 및 쓰기 명령의 수행 과정 및 이를 위한 메모리 맵(302)의 설정은 하나의 예시에 불과하다. 또한 이러한 데이터 처리 명령의 수행 과정은 컨트롤 레지스터(204)에 설정된 메모리 맵(302) 또는 메모리 액세스 인터페이스를 필요에 따라 변화시키는 등의 방법을 통하여 내부 또는 외부 환경의 변화에 실시간적으로 대처할 수 있다.
도 4는 본 발명의 실시예에 의한 데이터 읽기 명령의 처리 과정의 흐름을 설명하기 위한 순서도이다.
먼저, 제 1 클라이언트로부터 제 2 클라이언트의 메모리 영역에 대한 데이터 읽기 명령을 수신한다(402). 데이터 읽기 명령에는 제 1 클라이언트가 읽고자하는 데이터의 시작 위치를 나타내는 선형 주소와 같은 액세스 정보가 포함되어 있을 수 있다.
그 다음, 수신한 데이터 읽기 명령으로부터 제 2 클라이언트의 메모리 영역에 대한 액세스 인터페이스 정보를 획득한다(404). 제 2 클라이언트의 메모리 영역에 대한 액세스 인터페이스 정보는 제 2 클라이언트 영역에서 사용하는 주소 변환 방식과 같은 제 2 클라이언트의 액세스 정보와, 제 2 클라이언트 영역에 저장된 데이터의 엔디안니스와 같은 데이터 타입에 대한 정보를 포함하고 있다.
액세스 인터페이스 정보를 획득한 뒤, 획득한 액세스 인터페이스 정보를 이용하여 제 1 클라이언트의 액세스 정보를 제 2 클라이언트의 액세스 정보로 변환한다(406). 예를 들면, 제 1 클라이언트로부터 수신한 데이터 읽기 명령에 포함된 선형 주소를 액세스 인터페이스 정보를 이용하여 제 2 클라이언트의 메모리 영역에 액세스 가능한 주소 형식으로 변환하는 것이다.
이제 제 2 클라이언트의 액세스 정보를 이용하여 제 2 클라이언트의 메모리 영역에 액세스한다(408). 그리고 액세스된 제 2 클라이언트의 메모리 영역에서 제 1 클라이언트에 의해 요청된 데이터를 읽게 된다(410).
단계 410을 통해 읽은 데이터는 제 2 클라이언트의 메모리 영역에 저장되어 있었으므로 제 2 클라이언트가 사용하는 데이터 타입, 예를 들면 제 2 클라이언트의 엔디안니스를 가질 수 있다. 따라서 단계 404에서 획득한 액세스 인터페이스 정보를 이용하여 읽은 데이터의 타입을 제 1 클라이언트의 데이터 타입으로 변환한다(412). 이렇게 읽은 데이터를 제 1 클라이언트에 전달함으로써(414), 본 발명의 실시예에 의한 데이터 읽기 명령 수행 과정이 종료된다.
도 5는 본 발명의 실시예에 의한 데이터 쓰기 명령의 처리 과정의 흐름을 설 명하기 위한 순서도이다..
먼저, 제 1 클라이언트로부터 제 2 클라이언트의 메모리 영역에 대한 데이터 쓰기 명령을 수신한다(502). 데이터 쓰기 명령에는 제 1 클라이언트가 쓰고자하는 데이터의 시작 위치를 나타내는 선형 주소와 같은 액세스 정보가 포함되어 있을 수 있다. 또한 단계 502를 통해 데이터 쓰기 명령을 통해 쓰고자 하는 데이터도 함께 수신할 수 있다.
그 다음, 수신한 데이터 쓰기 명령으로부터 제 2 클라이언트의 메모리 영역에 대한 액세스 인터페이스 정보를 획득한다(504). 제 2 클라이언트의 메모리 영역에 대한 액세스 인터페이스 정보는 제 2 클라이언트 영역에서 사용하는 주소 변환 방식과 같은 제 2 클라이언트의 액세스 정보와, 제 2 클라이언트 영역에 저장된 데이터의 엔디안니스와 같은 데이터 타입에 대한 정보를 포함하고 있다.
액세스 인터페이스 정보를 획득한 뒤, 획득한 액세스 인터페이스 정보를 이용하여 제 1 클라이언트의 액세스 정보를 제 2 클라이언트의 액세스 정보로 변환한다(506). 예를 들면, 제 1 클라이언트로부터 수신한 데이터 쓰기 명령에 포함된 선형 주소를 액세스 인터페이스 정보를 이용하여 제 2 클라이언트의 메모리 영역에 액세스 가능한 주소 형식으로 변환하는 것이다.
이제 제 2 클라이언트의 액세스 정보를 이용하여 제 2 클라이언트의 메모리 영역에 액세스한다(508). 이 때, 단계 502를 통해 수신된 데이터는 제 1 클라이언트로부터 수신된 것이므로 제 1 클라이언트가 사용하는 데이터 타입, 예를 들면 제 1 클라이언트의 엔디안니스를 가질 수 있다. 따라서 단계 504에서 획득한 액세스 인터페이스 정보를 이용하여, 제 1 클라이언트가 제 2 클라이언트의 메모리 영역에 쓰고자 하는 데이터의 타입을 제 2 클라이언트의 데이터 타입으로 변환한다(510). 그리고 이 데이터를 액세스된 제 2 클라이언트의 메모리 영역에 씀으로써(512), 본 발명의 실시예에 의한 데이터 쓰기 명령 수행 과정이 종료된다.
도 6은 도 4의 제 1 클라이언트의 액세스 정보를 제 2 클라이언트의 액세스 정보로 변환하는 단계(406)에 대한 상세한 설명을 위한 순서도이다.
먼저 제 1 클라이언트의 액세스 정보를 데이터 읽기 명령 수행에 적합한 2 이상의 액세스 정보로 분할한다(602). 그리고 나서 분할된 2 이상의 액세스 정보를 액세스 인터페이스 정보를 이용하여 각각 제 2 클라이언트의 액세스 정보로 변환한다(604).
분할 후 변환된 각각의 제 2 클라이언트 액세스 정보는 경우에 따라서 병합 가능할 수도 있다. 따라서 변환된 각각의 제 2 클라이언트의 액세스 정보가 병합 가능한지 여부를 판단하고(606), 판단 결과 변환된 각각의 제 2 클라이언트의 액세스 정보가 병합 가능한 경우 변환된 각각의 제 2 클라이언트의 액세스 정보를 하나의 제 2 클라이언트의 액세스 정보로 병합한다(608).
도 6 에서는 편의상 도 4의 단계406을 기준으로 설명하였으나, 동일한 과정이 도 5의 단계 506에서도 수행될 수 있음은 물론이다.
지금까지 설명한 본 발명에 의하면, 하나의 시스템을 구성하고 있는 각 클라이언트들이 다른 클라이언트들의 주소 변환 방식 및 엔디안니스에 구애받지 않고 메모리를 통해 자신이 원하는 데이터를 읽거나 쓸 수 있도록 함으로써 각 클라이언 트가 가장 극대화된 성능을 이끌어 내도록 동작할 수 있는 장점이 있다.
또한 시스템 운용자나 시스템 자체의 필요에 따라 실시간으로 각 클라이언트의 주소 변환 방식이나 엔디안니스의 설정을 변화시킬 수 있게 함으로써 시스템 외부 환경이나 내부 상태 또는 각 클라이언트의 변화에도 유연하게 대처할 수 있도록 하는 장점이 있다.
또한 서로 다른 클라이언트들의 주소 방식 및 엔디안니스를 실시간으로 변환하여 줌으로써 다양한 클라이언트들의 다양한 주소 변환 방식 및 엔디안니스를 동시에 지원하는 장점이 있다.
전술한 바와 같은 본 발명의 방법은 컴퓨터 프로그램으로 작성이 가능하다. 그리고 상기 프로그램을 구성하는 코드 및 코드 세그먼트는 당해 분야의 컴퓨터 프로그래머에 의하여 용이하게 추론될 수 있다. 또한, 상기 작성된 프로그램은 컴퓨터가 읽을 수 있는 기록매체(정보저장매체)에 저장되고, 컴퓨터에 의하여 판독되고 실행됨으로써 본 발명의 방법을 구현한다. 그리고 상기 기록매체는 컴퓨터가 판독할 수 있는 모든 형태의 기록매체(CD, DVD와 같은 유형적 매체뿐만 아니라 반송파와 같은 무형적 매체)를 포함한다.
전술한 본 발명은, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 있어 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하므로 전술한 실시예 및 첨부된 도면에 의해 한정되는 것이 아니다.
도 1은 본 발명의 실시예에 의한 메모리 액세스 인터페이스 변환 장치와 클라이언트, 그리고 메모리 간의 연결 관계를 설명하기 위한 구성도.
도 2는 본 발명의 실시예에 의한 메모리 액세스 인터페이스 변환장치(108)의 구성을 설명하기 위한 구성도.
도 3은 본 발명에 의한 메모리 액세스 인터페이스 변환 방법의 실시예를 설명하기 위한 실제 메모리 구성 및 메모리 맵을 나타내는 도면.
도 4는 본 발명의 실시예에 의한 데이터 읽기 명령의 처리 과정의 흐름을 설명하기 위한 순서도.
도 5는 본 발명의 실시예에 의한 데이터 쓰기 명령의 처리 과정의 흐름을 설명하기 위한 순서도.
도 6은 도 4의 제 1 클라이언트의 액세스 정보를 제 2 클라이언트의 액세스 정보로 변환하는 단계(406)에 대한 상세한 설명을 위한 순서도.

Claims (31)

  1. 제 1 클라이언트로부터 제 2 클라이언트의 메모리 영역에 대한 데이터 처리 명령을 수신하는 단계;
    상기 데이터 처리 명령으로부터 상기 제 2 클라이언트의 메모리 영역에 대한 액세스 인터페이스 정보를 획득하는 단계;
    상기 액세스 인터페이스 정보를 이용하여 상기 제 1 클라이언트의 액세스 정보를 상기 제 2 클라이언트의 액세스 정보로 변환하는 단계; 및
    상기 제 2 클라이언트의 액세스 정보를 이용하여 상기 제 2 클라이언트의 메모리 영역에 액세스하는 단계를
    포함하는 메모리 액세스 인터페이스 변환 방법.
  2. 삭제
  3. 제 1 항에 있어서,
    상기 액세스된 제 2 클라이언트의 메모리 영역에서 상기 제 1 클라이언트에 의해 요청된 데이터를 읽는 단계를
    더 포함하는 메모리 액세스 인터페이스 변환 방법.
  4. 제 3 항에 있어서,
    상기 액세스 인터페이스 정보를 이용하여 상기 읽은 데이터의 타입을 상기 제 1 클라이언트의 데이터 타입으로 변환하는 단계를
    더 포함하는 메모리 액세스 인터페이스 변환 방법.
  5. 제 3 항에 있어서,
    상기 읽은 데이터를 상기 제 1 클라이언트에 전달하는 단계를
    더 포함하는 메모리 액세스 인터페이스 변환 방법.
  6. 제 1 항에 있어서,
    상기 액세스 인터페이스 정보를 이용하여 상기 제 1 클라이언트가 상기 제 2 클라이언트의 메모리 영역에 쓰고자 하는 데이터의 타입을 상기 제 2 클라이언트의 데이터 타입으로 변환하는 단계를
    더 포함하는 메모리 액세스 인터페이스 변환 방법.
  7. 제 1 항에 있어서,
    상기 제 1 클라이언트의 액세스 정보를 상기 제 2 클라이언트의 액세스 정보로 변환하는 단계는
    상기 제 1 클라이언트의 액세스 정보를 메모리의 액세스 정보 처리 능력과 상응하는 2 이상의 액세스 정보로 분할하는 단계; 및
    상기 분할된 2 이상의 액세스 정보를 상기 액세스 인터페이스 정보를 이용하여 각각 상기 제 2 클라이언트의 액세스 정보로 변환하는 단계를
    포함하는 메모리 액세스 인터페이스 변환 방법.
  8. 제 1 항에 있어서,
    상기 제 1 클라이언트의 액세스 정보를 상기 제 2 클라이언트의 액세스 정보로 변환하는 단계는
    상기 변환된 각각의 제 2 클라이언트의 액세스 정보가 병합 가능한지 여부를 판단하는 단계; 및
    상기 판단 결과 상기 변환된 각각의 제 2 클라이언트의 액세스 정보가 병합 가능한 경우 상기 변환된 각각의 제 2 클라이언트의 액세스 정보를 하나의 제 2 클라이언트의 액세스 정보로 병합하는 단계를
    더 포함하는 메모리 액세스 인터페이스 변환 방법.
  9. 제 1 클라이언트로부터 제 2 클라이언트의 메모리 영역에 대한 데이터 읽기 명령을 수신하는 단계;
    상기 데이터 읽기 명령으로부터 상기 제 2 클라이언트의 메모리 영역에 대한 액세스 인터페이스 정보를 획득하는 단계;
    상기 액세스 인터페이스 정보를 이용하여 상기 제 1 클라이언트의 액세스 정보를 상기 제 2 클라이언트의 액세스 정보로 변환하는 단계; 및
    상기 제 2 클라이언트의 액세스 정보를 이용하여 상기 제 2 클라이언트의 메모리 영역에 액세스하는 단계를
    포함하는 메모리 액세스 인터페이스 변환 방법.
  10. 삭제
  11. 제 9 항에 있어서,
    상기 액세스된 제 2 클라이언트의 메모리 영역에서 상기 제 1 클라이언트에 의해 요청된 데이터를 읽는 단계를
    더 포함하는 메모리 액세스 인터페이스 변환 방법.
  12. 제 11 항에 있어서,
    상기 액세스 인터페이스 정보를 이용하여 상기 읽은 데이터의 타입을 상기 제 1 클라이언트의 데이터 타입으로 변환하는 단계를
    더 포함하는 메모리 액세스 인터페이스 변환 방법.
  13. 제 11 항에 있어서,
    상기 읽은 데이터를 상기 제 1 클라이언트에 전달하는 단계를
    더 포함하는 메모리 액세스 인터페이스 변환 방법.
  14. 제 9 항에 있어서,
    상기 제 1 클라이언트의 액세스 정보를 상기 제 2 클라이언트의 액세스 정보로 변환하는 단계는
    상기 제 1 클라이언트의 액세스 정보를 메모리의 액세스 정보 처리 능력과 상응하는 2 이상의 액세스 정보로 분할하는 단계; 및
    상기 분할된 2 이상의 액세스 정보를 상기 액세스 인터페이스 정보를 이용하여 각각 상기 제 2 클라이언트의 액세스 정보로 변환하는 단계를
    포함하는 메모리 액세스 인터페이스 변환 방법.
  15. 제 14 항에 있어서,
    상기 제 1 클라이언트의 액세스 정보를 상기 제 2 클라이언트의 액세스 정보로 변환하는 단계는
    상기 변환된 각각의 제 2 클라이언트의 액세스 정보가 병합 가능한지 여부를 판단하는 단계; 및
    상기 판단 결과 상기 변환된 각각의 제 2 클라이언트의 액세스 정보가 병합 가능한 경우 상기 변환된 각각의 제 2 클라이언트의 액세스 정보를 하나의 제 2 클라이언트의 액세스 정보로 병합하는 단계를
    더 포함하는 메모리 액세스 인터페이스 변환 방법.
  16. 제 1 클라이언트로부터 제 2 클라이언트의 메모리 영역에 대한 데이터 쓰기 명령을 수신하는 단계;
    상기 데이터 쓰기 명령으로부터 상기 제 2 클라이언트의 메모리 영역에 대한 액세스 인터페이스 정보를 획득하는 단계;
    상기 액세스 인터페이스 정보를 이용하여 상기 제 1 클라이언트의 액세스 정보를 상기 제 2 클라이언트의 액세스 정보로 변환하는 단계; 및
    상기 제 2 클라이언트의 액세스 정보를 이용하여 상기 제 2 클라이언트의 메모리 영역에 액세스하는 단계를
    포함하는 메모리 액세스 인터페이스 변환 방법.
  17. 삭제
  18. 제 16 항에 있어서,
    상기 액세스 인터페이스 정보를 이용하여 상기 제 1 클라이언트가 상기 제 2 클라이언트의 메모리 영역에 쓰고자 하는 데이터의 타입을 상기 제 2 클라이언트의 데이터 타입으로 변환하는 단계를
    더 포함하는 메모리 액세스 인터페이스 변환 방법.
  19. 제 18 항에 있어서,
    상기 액세스된 제 2 클라이언트의 메모리 영역에서 상기 데이터를 쓰는 단계를
    더 포함하는 메모리 액세스 인터페이스 변환 방법.
  20. 제 16 항에 있어서,
    상기 제 1 클라이언트의 액세스 정보를 상기 제 2 클라이언트의 액세스 정보로 변환하는 단계는
    상기 제 1 클라이언트의 액세스 정보를 메모리의 액세스 정보 처리 능력과 상응하는 2 이상의 액세스 정보로 분할하는 단계; 및
    상기 분할된 2 이상의 액세스 정보를 상기 액세스 인터페이스 정보를 이용하여 각각 상기 제 2 클라이언트의 액세스 정보로 변환하는 단계를
    포함하는 메모리 액세스 인터페이스 변환 방법.
  21. 제 20 항에 있어서,
    상기 제 1 클라이언트의 액세스 정보를 상기 제 2 클라이언트의 액세스 정보로 변환하는 단계는
    상기 변환된 각각의 제 2 클라이언트의 액세스 정보가 병합 가능한지 여부를 판단하는 단계; 및
    상기 판단 결과 상기 변환된 각각의 제 2 클라이언트의 액세스 정보가 병합 가능한 경우 상기 변환된 각각의 제 2 클라이언트의 액세스 정보를 하나의 제 2 클라이언트의 액세스 정보로 병합하는 단계를
    더 포함하는 메모리 액세스 인터페이스 변환 방법.
  22. 제 1 항, 제3항 내지 제9항, 제11항 내지 제16항 및 제18항 내지 제 21 항 중 어느 한 항에 기재된 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  23. 제 1 클라이언트로부터 제 2 클라이언트의 메모리 영역에 대한 데이터 처리 명령을 수신하는 명령 수신부;
    상기 데이터 처리 명령으로부터 상기 제 2 클라이언트의 메모리 영역에 대한 액세스 인터페이스 정보를 획득하고, 상기 액세스 인터페이스 정보를 이용하여 상기 제 1 클라이언트의 액세스 정보를 상기 제 2 클라이언트의 액세스 정보로 변환하는 액세스 정보 변환부;및
    상기 제 2 클라이언트의 액세스 정보를 이용하여 상기 제 2 클라이언트의 메모리 영역에 액세스하는 명령 처리부를
    포함하는 메모리 액세스 인터페이스 변환 장치.
  24. 삭제
  25. 제 23 항에 있어서,
    상기 명령 처리부는
    상기 액세스된 제 2 클라이언트의 메모리 영역에서 상기 제 1 클라이언트에 의해 요청된 데이터를 읽는 메모리 액세스 인터페이스 변환 장치.
  26. 제 25 항에 있어서,
    상기 액세스 인터페이스 정보를 이용하여 상기 읽은 데이터의 타입을 상기 제 1 클라이언트의 데이터 타입으로 변환하는 데이터 타입 변환부를
    더 포함하는 메모리 액세스 인터페이스 변환 장치.
  27. 제 25 항에 있어서,
    상기 명령 처리부는
    상기 읽은 데이터를 상기 제 1 클라이언트에 전달하는 메모리 액세스 인터페이스 변환 장치.
  28. 제 23 항에 있어서,
    상기 액세스 인터페이스 정보를 이용하여 상기 제 1 클라이언트가 상기 제 2 클라이언트의 메모리 영역에 쓰고자 하는 데이터의 타입을 상기 제 2 클라이언트의 데이터 타입으로 변환하는 명령 처리부를
    더 포함하는 메모리 액세스 인터페이스 변환 장치.
  29. 제 28 항에 있어서,
    상기 명령 처리부는
    상기 액세스된 제 2 클라이언트의 메모리 영역에서 상기 데이터를 쓰는 메모리 액세스 인터페이스 변환 장치.
  30. 제 23 항에 있어서,
    상기 액세스 정보 변환부는
    상기 제 1 클라이언트의 액세스 정보를 상기 데이터 처리 명령 수행에 메모리의 액세스 정보 처리 능력과 상응하는 2 이상의 액세스 정보로 분할하고, 상기 분할된 2 이상의 액세스 정보를 상기 액세스 인터페이스 정보를 이용하여 각각 상기 제 2 클라이언트의 액세스 정보로 변환하는 액세스 정보 분할부를
    포함하는 메모리 액세스 인터페이스 변환 장치.
  31. 제 30 항에 있어서,
    상기 액세스 정보 변환부는
    상기 변환된 각각의 제 2 클라이언트의 액세스 정보가 병합 가능한지 여부를 판단하고, 상기 판단 결과 상기 변환된 각각의 제 2 클라이언트의 액세스 정보가 병합 가능한 경우 상기 변환된 각각의 제 2 클라이언트의 액세스 정보를 하나의 제 2 클라이언트의 액세스 정보로 병합하는 액세스 정보 병합부를
    더 포함하는 메모리 액세스 인터페이스 변환 장치.
KR20080098385A 2008-10-07 2008-10-07 메모리 액세스 인터페이스의 변환 방법 및 장치 KR101035732B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR20080098385A KR101035732B1 (ko) 2008-10-07 2008-10-07 메모리 액세스 인터페이스의 변환 방법 및 장치
PCT/KR2008/007656 WO2010041793A1 (en) 2008-10-07 2008-12-24 Method and apparatus for transformation of memory access interface

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR20080098385A KR101035732B1 (ko) 2008-10-07 2008-10-07 메모리 액세스 인터페이스의 변환 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20100039147A KR20100039147A (ko) 2010-04-15
KR101035732B1 true KR101035732B1 (ko) 2011-05-19

Family

ID=42100731

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20080098385A KR101035732B1 (ko) 2008-10-07 2008-10-07 메모리 액세스 인터페이스의 변환 방법 및 장치

Country Status (2)

Country Link
KR (1) KR101035732B1 (ko)
WO (1) WO2010041793A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103885900B (zh) * 2012-12-20 2017-03-08 北京华为数字技术有限公司 数据访问处理方法、PCIe设备和用户设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080000046A (ko) * 2006-06-26 2008-01-02 삼성전자주식회사 멀티―포트 메모리 컨트롤러 인터페이스 장치 및 방법

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4459903B2 (ja) * 2002-09-30 2010-04-28 テレフオンアクチーボラゲット エル エム エリクソン(パブル) スケーラブル・マルチチャネル・メモリアクセスのための方法、及びメモリコントローラ
DE102004038211A1 (de) * 2004-08-05 2006-03-16 Robert Bosch Gmbh Botschaftsverwalter und Verfahren zur Steuerung des Zugriffs auf Daten eines Botschaftsspeichers eines Kommunikationsbausteins
KR100728650B1 (ko) * 2005-07-26 2007-06-14 엠텍비젼 주식회사 복수 경로를 통한 다중 분할된 메모리 공유 방법 및 장치
US8145869B2 (en) * 2007-01-12 2012-03-27 Broadbus Technologies, Inc. Data access and multi-chip controller

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080000046A (ko) * 2006-06-26 2008-01-02 삼성전자주식회사 멀티―포트 메모리 컨트롤러 인터페이스 장치 및 방법

Also Published As

Publication number Publication date
WO2010041793A1 (en) 2010-04-15
KR20100039147A (ko) 2010-04-15

Similar Documents

Publication Publication Date Title
US5864876A (en) DMA device with local page table
KR100630980B1 (ko) 메모리 카드 및 반도체 장치
EP3217294A1 (en) File access method and apparatus and storage device
US7245539B2 (en) Memory card, semiconductor device, and method of controlling semiconductor memory
KR19980063551A (ko) 신호 처리 장치 및 소프트웨어
US8473691B2 (en) Memory management device, image forming apparatus, and image forming method
CN117312201B (zh) 一种数据传输方法、装置及加速器设备、主机和存储介质
CN107451070B (zh) 一种数据的处理方法和服务器
US8402199B2 (en) Memory management system and method thereof
KR101035732B1 (ko) 메모리 액세스 인터페이스의 변환 방법 및 장치
CN110765060B (zh) Mdio总线到并行总线转换方法及装置、设备、介质
CN110795373B (zh) 一种i2c总线到并行总线的转换方法、终端及存储介质
US20090138633A1 (en) Computer, external storage and method for processing data information in external storage
JP4471947B2 (ja) データ処理装置及びデータ処理方法
CN113961487A (zh) 加速存储器存取的电子装置及方法
CN110362509B (zh) 统一地址转换方法与统一地址空间
US7382970B2 (en) Process control manager for audio/video file system
JP2009217714A (ja) データ処理回路、キャッシュシステムおよびデータ転送装置
JP2001134496A (ja) 不揮発性半導体メモリを用いた記憶装置
JP4164452B2 (ja) 情報処理方法及び装置
US20240184712A1 (en) Memory system with improved map table update efficiency, memory controller therefor, and operating method thereof
JP2007310927A (ja) 不揮発性メモリ、メモリコントローラ、不揮発性記憶装置、及び不揮発性記憶システム
US10719440B2 (en) Semiconductor device and memory access method
JP2007293564A (ja) メモリデバイスおよび情報記憶システム
CN118349485A (zh) 一种基于bios pci链路实现物理内存共享的方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20140513

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150615

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160510

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee