KR20150132151A - 프로그램 가능한 어드레스 매핑 및 메모리 액세스 동작 - Google Patents
프로그램 가능한 어드레스 매핑 및 메모리 액세스 동작 Download PDFInfo
- Publication number
- KR20150132151A KR20150132151A KR1020157024834A KR20157024834A KR20150132151A KR 20150132151 A KR20150132151 A KR 20150132151A KR 1020157024834 A KR1020157024834 A KR 1020157024834A KR 20157024834 A KR20157024834 A KR 20157024834A KR 20150132151 A KR20150132151 A KR 20150132151A
- Authority
- KR
- South Korea
- Prior art keywords
- address
- pad
- memory
- addressable memory
- exemplary
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1689—Synchronisation and timing concerns
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/30—Providing cache or TLB in specific location of a processing system
- G06F2212/305—Providing cache or TLB in specific location of a processing system being part of a memory device, e.g. cache DRAM
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
프로그램 가능한 어드레스 매핑 및 메모리 액세스 동작이 개시된다. 예시적인 장치는 제 1 호스트 물리 어드레스를 제 1 중간 어드레스로 변환하는 어드레스 변환기를 포함한다. 예시적인 장치는 또한 제 1 중간 어드레스를 메모리 내 제 1 어드레스 가능한 메모리 장소의 제 1 하드웨어 메모리 어드레스로 디코딩하는 프로그램 가능한 어드레스 디코더를 포함하고, 프로그램 가능한 어드레스 디코더는 제 1 커맨드를 수신하여 제 1 중간 어드레스와 메모리 내 제 2 어드레스 가능한 메모리 장소의 제 2 하드웨어 메모리 어드레스 간의 매핑을 변경함으로써 제 1 호스트 물리 어드레스를 메모리 내 제 2 어드레스 가능한 메모리 장소와 연관시킨다.
Description
컴퓨팅 시스템의 프로세서는 컴퓨터 프로그램의 명령어를 실행하여 데이터의 연산을 수행한다. 컴퓨팅 시스템의 메모리는 프로세서에 의해 액세스될 수 있는 컴퓨터 프로그램 및/또는 데이터를 저장한다. 정보를 저장하고 정보에 액세스하는 것을 가능하게 하기 위해, 컴퓨팅 시스템은 데이터를 메모리 디바이스 내 특정한 선택된 장소에 저장하는 기록 동작을 수행하고 메모리 디바이스 내 특정한 선택된 장소로부터 데이터를 판독하도록 어드레스 가능한 메모리 디바이스를 포함한다.
도 1a는 본 개시의 가르침에 따라서 구성된 예시적인 어드레스 변환기 및 프로그램 가능한 어드레스 디코더(programmable address decoder; PAD)이다.
도 1b는 도 1a의 어드레스 변환기 및 PAD를 갖춘 메모리 컨트롤러를 갖는 예시적인 컴퓨터 시스템이다.
도 1c는 도 1b의 메모리 컨트롤러 및 도 1a와 도 1b의 PAD의 논리적 표현을 도시한다.
도 1d는 종래의 메모리 컨트롤러를 도 1a 및 도 1b의 어드레스 변환기 및 PAD와 조합하여 사용하는 일 예를 도시한다.
도 2 및 도 3은 도 1a 내지 도 1d의 예시적인 어드레스 변환기 및 예시적인 PAD가 호스트 물리 어드레스를 디코딩하여 어드레스 가능한 메모리 장소의 어레이에 액세스하는 방법을 예시한다.
도 4a 및 도 4b는 도 1a, 1b 및 1c의 PDA를 구현하기 위해 사용될 수 있는 예시적인 로직 회로 및 상태 머신을 예시한다.
도 5는 도 1a 내지 도 1d의 예시적인 PDA에 의해 기록 동작을 수행하기 위해 사용되는 신호를 예시하는 타이밍도이다.
도 6은 도 1a 내지 도 1d 및 도 2 내지 도 4의 예시적인 PAD에 의해 판독 동작을 수행하기 위해 사용되는 신호를 예시하는 타이밍도이다.
도 7은 도 1a 내지 도 1d 및 도 2 내지 도 4의 예시적인 PAD에 의해 시프트 업(shift up) 동작을 수행하기 위해 사용되는 신호를 예시하는 타이밍도이다.
도 8은 도 1a 내지 도 1d 및 도 2 내지 도 4의 예시적인 PAD에 의해 시프트 다운(shift down) 동작을 수행하기 위해 사용되는 신호를 예시하는 타이밍도이다.
도 9는 도 1a 내지 도 1d 및 도 2 내지 도 4의 예시적인 PAD에 의해 리매핑(remap) 동작을 수행하기 위해 사용되는 신호를 예시하는 타이밍도이다.
도 10은 도 1a 내지 도 1d 및 도 2 내지 도 4의 예시적인 PAD에 의해 삽입(insert) 동작을 수행하기 위해 사용되는 신호를 예시하는 타이밍도이다.
도 11은 도 1a 내지 도 1d 및 도 2 내지 도 4의 예시적인 PAD에 의해 삭제(delete) 동작을 수행하기 위해 사용되는 신호를 예시하는 타이밍도이다.
도 12는 도 1a 내지 도 1d 및 도 2 내지 도 4의 예시적인 PAD에 의해 부분적 시프트 업(partial shift up) 동작을 수행하기 위해 사용되는 신호를 예시하는 타이밍도이다.
도 13은 도 1a 내지 도 1d 및 도 2 내지 도 4의 예시적인 PAD에 의해 부분적 시프트 다운(partial shift down) 동작을 수행하기 위해 사용되는 신호를 예시하는 타이밍도이다.
도 14는 도 1b의 프로세서로부터 커맨드를 수신하고 실행하기 위해 실행될 수 있는 예시적인 머신 판독 가능한 명령어를 나타내는 플로우차트이다.
도 15는 기록 동작을 수행하기 위해 실행될 수 있는 예시적인 머신 판독 가능한 명령어를 나타내는 플로우차트이다.
도 16은 판독 동작을 수행하기 위해 실행될 수 있는 예시적인 머신 판독 가능한 명령어를 나타내는 플로우차트이다.
도 17은 시프트 업 동작을 수행하기 위해 실행될 수 있는 예시적인 머신 판독 가능한 명령어를 나타내는 플로우차트이다.
도 18은 시프트 다운 동작을 수행하기 위해 실행될 수 있는 예시적인 머신 판독 가능한 명령어를 나타내는 플로우차트이다.
도 19는 리매핑 활성화 동작을 수행하기 위해 실행될 수 있는 예시적인 머신 판독 가능한 명령어를 나타내는 플로우차트이다.
도 20은 리매핑 동작을 수행하기 위해 실행될 수 있는 예시적인 머신 판독 가능한 명령어를 나타내는 플로우차트이다.
도 21은 삽입 동작을 수행하기 위해 실행될 수 있는 예시적인 머신 판독 가능한 명령어를 나타내는 플로우차트이다.
도 22는 삭제 동작을 수행하기 위해 실행될 수 있는 예시적인 머신 판독 가능한 명령어를 나타내는 플로우차트이다.
도 23은 부분적 시프트 업 동작을 수행하기 위해 실행될 수 있는 예시적인 머신 판독 가능한 명령어를 나타내는 플로우차트이다.
도 24는 부분적 시프트 다운 동작을 수행하기 위해 실행될 수 있는 예시적인 머신 판독 가능한 명령어를 나타내는 플로우차트이다.
도 25는 도 1a 내지 도 1d와 도 2 및 도 3의 PDA에서 수신되는 커맨드를 수행하기 위해 실행될 수 있는 예시적인 머신 판독 가능한 명령어를 나타내는 플로우차트이다.
도 1b는 도 1a의 어드레스 변환기 및 PAD를 갖춘 메모리 컨트롤러를 갖는 예시적인 컴퓨터 시스템이다.
도 1c는 도 1b의 메모리 컨트롤러 및 도 1a와 도 1b의 PAD의 논리적 표현을 도시한다.
도 1d는 종래의 메모리 컨트롤러를 도 1a 및 도 1b의 어드레스 변환기 및 PAD와 조합하여 사용하는 일 예를 도시한다.
도 2 및 도 3은 도 1a 내지 도 1d의 예시적인 어드레스 변환기 및 예시적인 PAD가 호스트 물리 어드레스를 디코딩하여 어드레스 가능한 메모리 장소의 어레이에 액세스하는 방법을 예시한다.
도 4a 및 도 4b는 도 1a, 1b 및 1c의 PDA를 구현하기 위해 사용될 수 있는 예시적인 로직 회로 및 상태 머신을 예시한다.
도 5는 도 1a 내지 도 1d의 예시적인 PDA에 의해 기록 동작을 수행하기 위해 사용되는 신호를 예시하는 타이밍도이다.
도 6은 도 1a 내지 도 1d 및 도 2 내지 도 4의 예시적인 PAD에 의해 판독 동작을 수행하기 위해 사용되는 신호를 예시하는 타이밍도이다.
도 7은 도 1a 내지 도 1d 및 도 2 내지 도 4의 예시적인 PAD에 의해 시프트 업(shift up) 동작을 수행하기 위해 사용되는 신호를 예시하는 타이밍도이다.
도 8은 도 1a 내지 도 1d 및 도 2 내지 도 4의 예시적인 PAD에 의해 시프트 다운(shift down) 동작을 수행하기 위해 사용되는 신호를 예시하는 타이밍도이다.
도 9는 도 1a 내지 도 1d 및 도 2 내지 도 4의 예시적인 PAD에 의해 리매핑(remap) 동작을 수행하기 위해 사용되는 신호를 예시하는 타이밍도이다.
도 10은 도 1a 내지 도 1d 및 도 2 내지 도 4의 예시적인 PAD에 의해 삽입(insert) 동작을 수행하기 위해 사용되는 신호를 예시하는 타이밍도이다.
도 11은 도 1a 내지 도 1d 및 도 2 내지 도 4의 예시적인 PAD에 의해 삭제(delete) 동작을 수행하기 위해 사용되는 신호를 예시하는 타이밍도이다.
도 12는 도 1a 내지 도 1d 및 도 2 내지 도 4의 예시적인 PAD에 의해 부분적 시프트 업(partial shift up) 동작을 수행하기 위해 사용되는 신호를 예시하는 타이밍도이다.
도 13은 도 1a 내지 도 1d 및 도 2 내지 도 4의 예시적인 PAD에 의해 부분적 시프트 다운(partial shift down) 동작을 수행하기 위해 사용되는 신호를 예시하는 타이밍도이다.
도 14는 도 1b의 프로세서로부터 커맨드를 수신하고 실행하기 위해 실행될 수 있는 예시적인 머신 판독 가능한 명령어를 나타내는 플로우차트이다.
도 15는 기록 동작을 수행하기 위해 실행될 수 있는 예시적인 머신 판독 가능한 명령어를 나타내는 플로우차트이다.
도 16은 판독 동작을 수행하기 위해 실행될 수 있는 예시적인 머신 판독 가능한 명령어를 나타내는 플로우차트이다.
도 17은 시프트 업 동작을 수행하기 위해 실행될 수 있는 예시적인 머신 판독 가능한 명령어를 나타내는 플로우차트이다.
도 18은 시프트 다운 동작을 수행하기 위해 실행될 수 있는 예시적인 머신 판독 가능한 명령어를 나타내는 플로우차트이다.
도 19는 리매핑 활성화 동작을 수행하기 위해 실행될 수 있는 예시적인 머신 판독 가능한 명령어를 나타내는 플로우차트이다.
도 20은 리매핑 동작을 수행하기 위해 실행될 수 있는 예시적인 머신 판독 가능한 명령어를 나타내는 플로우차트이다.
도 21은 삽입 동작을 수행하기 위해 실행될 수 있는 예시적인 머신 판독 가능한 명령어를 나타내는 플로우차트이다.
도 22는 삭제 동작을 수행하기 위해 실행될 수 있는 예시적인 머신 판독 가능한 명령어를 나타내는 플로우차트이다.
도 23은 부분적 시프트 업 동작을 수행하기 위해 실행될 수 있는 예시적인 머신 판독 가능한 명령어를 나타내는 플로우차트이다.
도 24는 부분적 시프트 다운 동작을 수행하기 위해 실행될 수 있는 예시적인 머신 판독 가능한 명령어를 나타내는 플로우차트이다.
도 25는 도 1a 내지 도 1d와 도 2 및 도 3의 PDA에서 수신되는 커맨드를 수행하기 위해 실행될 수 있는 예시적인 머신 판독 가능한 명령어를 나타내는 플로우차트이다.
프로세서는 컴퓨팅 시스템의 메모리에 액세스하여 상이한 동작을 수행하는 컴퓨터 프로그램의 명령어를 실행한다. 메모리는 상이한 메모리 아키텍처 및/또는 컴퓨팅 플랫폼에 기초하여 상이한 비트 길이로 어드레스 가능한 메모리 디바이스 내에 데이터 비트를 저장한다. 예를 들면, 메모리 디바이스는 바이트(예를 들면, 8비트)로 또는 상이한 크기의 워드(예를 들면, 16 비트, 32 비트, 64 비트, 128 비트 등)로 어드레스 가능할 수 있다. 본 출원에서 사용되는 바와 같이, 어드레스 가능한 비트 그룹(예를 들면, 바이트, 워드 등)을 저장하는 메모리 장소는 어드레스 가능한 메모리 장소라고 지칭된다. 일부 사례에서, 프로세서는 프로세서와 메모리 사이의 데이터 흐름을 관리하는 별개의 메모리 컨트롤러를 통해 메모리와 통신한다. 메모리 컨트롤러는 메모리 컨트롤러를 가진 메모리 모듈 및 예를 들면, 다이나믹 랜덤 액세스 메모리(dynamic random access memory, DRAM) 및/또는 임의의 다른 유형의 휘발성 또는 비휘발성 메모리를 갖는 듀얼 인라인 메모리 모듈(dual inline memory module, DIMM)과 같은 메모리 칩 상에 배치될 수 있다. 다른 예에서, 메모리 컨트롤러는 컴퓨팅 시스템의 메인 컴퓨터 인쇄 회로 기판(printed circuit board, PCB) 상에 실장되는 칩으로서 구현된다.
메모리 어드레스의 세 가지 형태는 논리(예를 들면, 가상) 어드레스, 호스트 물리 어드레스, 그리고 하드웨어 메모리 어드레스(또는 메모리 회로 어드레스)를 포함한다. 논리 어드레스는 메모리 액세스를 수행하는 프로그램에 의해 사용된다. 논리 어드레스는 컴퓨터 시스템 내 메모리의 물리적인 레이아웃으로부터 메모리에 액세스하는 소프트웨어에 의해 사용되는 추상적인 어드레스 지정에 유용하다.
프로세서의 메모리 관리 유닛(memory management unit, MMU)은 변환 룩어사이드 버퍼(translation lookaside buffer, TLB)를 사용하여 논리 어드레스를 호스트 물리 어드레스로 변환하여, 컴퓨팅 시스템이 소프트웨어에 의해 사용되는 논리 어드레스에 대응하는 호스트 물리 어드레스로 물리적인 메모리를 액세스할 수 있도록 한다. 호스트 물리 어드레스를 결정하기 위해, TLB는 물리적인 메모리 어드레스 공간이 소프트웨어에 의해 사용 가능한 논리 어드레스에 매핑되는 논리-대-물리 메모리 맵을 사용한다. 그러한 논리-대-물리 메모리 맵은 물리 메모리의 호스트 물리 어드레스에서 일어나는 변동을 추적해야 하는 소프트웨어에 부담을 주지 않고도 물리 메모리의 물리적 구성, 레이아웃, 설치 등에서 변동을 가능하게 해준다. 그 대신에, 프로세서는 TLB 내에서 논리-대-물리 메모리 맵을 업데이트하여 논리 어드레스를 새로운/상이한 호스트 물리 어드레스로 리매핑(remap)한다.
메모리 액세스 요청 동안, 프로세스가 논리 어드레스에 기초하여 호스트 물리 어드레스를 결정한 후, 프로세서는 호스트 물리 어드레스를 사용하여 메모리 어드레스 요청을 메모리 컨트롤러에게 전송한다. 그러면 메모리 컨트롤러는 호스트 물리 어드레스를 호스트 물리 어드레스에 대응하는 어드레스 가능한 메모리 장소를 가진 메모리 디바이스(들)의 하드웨어 메모리 어드레스 또는 메모리 회로 어드레스로 디코딩한다. 본 출원에 개시된 예에서, 하드웨어 메모리 어드레스 또는 메모리 회로 어드레스는 물리 메모리 모듈, 물리 메모리 어레이, 물리 메모리 다이/칩, 및 메모리 다이/칩 내 물리 메모리 디바이스 장소(예를 들면, 비트 셀들의 어드레스 가능한 그룹)를 나타낸다. 메모리 컨트롤러는 메모리 디바이스에 액세스하기 위해 하드웨어 메모리 어드레스(또는 메모리 회로 어드레스)를 사용하며 그래서 메모리 디바이스는 온-다이 메모리 셀 장소를 결정하여 메모리 컨트롤러에 의해 디코딩되는 호스트 물리 어드레스에 대응하는 상이한 어드레스 가능한 메모리 장소의 메모리 비트를 활성화시키는 내부의 워드라인 및 비트라인 회로를 제어할 수 있다. 다이나믹 랜덤 액세스 메모리(DRAM)에서와 같은 일부의 예에서, 메모리 어드레스 가능한 장소는 하드웨어 어드레스를 (DRAM 어드레스 버스를 통해 로우 어드레스 스트로브(row address strobe, RAS)와 동시에 전달되는) 로우 어드레스 및 (DRAM 어드레스 버스를 통해 컬럼 어드레스 스트로브(column address strobe, CAS)와 동시에 전달되는) 컬럼 어드레스로서 해석함으로써 액세스될 수 있다.
종래의 시스템에서, 프로세서가 호스트 물리 어드레스를 명시하면, 메모리 컨트롤러는 순차적인 호스트 물리 어드레스를 가진 메모리 디바이스의 어드레스 가능한 메모리 장소에 매핑하는 정적 데이터 구조를 사용하여 호스트 물리 어드레스를 하드웨어 메모리 어드레스로 디코딩한다.
본 출원에 개시된 예시적인 방법, 장치 및 제조 물품은 메모리 컨트롤러에게 프로그램 가능한 동작을 하게 해준다. 특히, 본 출원에 개시된 예는 프로세서에 의해 명시되는 호스트 물리 어드레스와 메모리 디바이스의 메모리 어드레스 가능한 장소의 하드웨어 메모리 어드레스 간의 매핑을 변경하는데 사용될 수 있다. 그러한 매핑 변경은 본 출원에 개시된 예를 사용하여 런타임 동안, 시스템 부팅 국면 동안, 및/또는 메모리 실장 국면 동안 동적으로 수행될 수 있다.
본 출원에 개시된 예는 어드레스 변환기 및 프로그램 가능한 어드레스 디코더(programmable address decoder, PAD)를 포함한다. 메모리 액세스 요청 동안, 예시적인 어드레스 변환기는 프로세서(예를 들면, 호스트)로부터 물리 메모리 어드레스(예를 들면, 호스트 물리 메모리 어드레스)를 수신한다. 호스트 물리 어드레스를 수신하면, 예시적인 어드레스 변환기는 호스트 물리 어드레스를 PAD 어드레스로 변환한다. PAD 어드레스는 예시적인 PAD에 의해 내부적으로 사용되는 논리적인 중간 어드레스(즉, 중간 어드레스)이다. 예시적인 PAD는 어드레스 변환기로부터 PAD 어드레스를 수신하고 PAD 어드레스를 프로세서에 의해 명시되는 호스트 물리 어드레스에 대응하는 어드레스 가능한 메모리 장소의 하드웨어 메모리 어드레스로 디코딩한다. 그런 다음 예시적인 메모리 컨트롤러는 프로세서에 의해 명시되는 호스트 물리 어드레스에 대응하는 디코딩된 하드웨어 메모리 어드레스에서 요청된 메모리 액세스 동작, 이를 테면, 디코딩된 하드웨어 메모리 어드레스에서 어드레스 가능한 메모리 장소에 기록하거나 그 어드레스 가능한 메모리 장소로부터 읽기를 수행할 수 있다.
본 출원에 개시된 예에서, 메모리 액세스를 용이하게 하는 것 이외에, 메모리 컨트롤러는 프로세서로부터의 커맨드에 기초하여 호스트 물리 어드레스와 하드웨어 메모리 어드레스 간의 어드레스 매핑을 변경한다. 개시된 예에서, 메모리 컨트롤러는 어느 PAD 어드레스가 어느 하드웨어 메모리 어드레스에 대응하는 것을 변경함으로써 어드레스 매핑을 변경한다. 예를 들면, 어드레스 변환기는 PAD 어드레스를 변경하여 호스트 물리 어드레스와 변경된 PAD 어드레스 간의 매핑을 변경하며, 이렇게 하여 호스트 물리 어드레스가 상이한 하드웨어 메모리 어드레스에 매핑된다. 따라서, 호스트 물리 어드레스와 데이터가 메모리 셀에 저장되어 있는 실제 하드웨어 메모리 장소와의 메모리 매핑은 프로세서와 별개이면서 어드레스 변환기 및 PAD를 포함하는 메모리 컨트롤러에 의해 다루어질 수 있다. 이러한 방식으로, 프로세서는 호스트 물리 어드레스 및 메모리 셀 내 데이터의 실제 하드웨어 메모리 저장 장소의 추적을 관리하지 않아도 되며, 이는 프로세서의 자원이 다른 컴퓨팅 작업에 사용되게 할 수 있다.
도 1a는 본 개시의 가르침에 따라서 구성된 예시적인 어드레스 변환기(102) 및 프로그램 가능한 어드레스 디코더(PAD)(104)의 블록도이다.
도 1b에서, 어드레스 변환기(102) 및 PAD(104)는 본 개시의 가르침에 따라서 구성된 예시적인 컴퓨터 시스템(106)의 예시적인 메모리 컨트롤러(100) 내에 있는 것으로 도시된다.
예시적인 컴퓨터 시스템(106)에서, 메모리 컨트롤러(100)는 프로세서(108)(예를 들면, 하드웨어 프로세서)와 메모리 디바이스 어레이(110) 사이에서 통신으로 결합된다. 예시된 예에서, 프로세서(108)는 하나 이상의 컴퓨터 프로그램의 명령어를 실행한다. 예시적인 프로세서(108)는 예시적인 메모리 컨트롤러(100)와 통신하여 메모리 액세스를 수행하며 메모리 컨트롤러(100)에게 아래에서 논의되는 프로그램 가능한 다른 동작을 수행하도록 명령한다. 비록 예시적인 메모리 컨트롤러(100)가 예시적인 프로세서(108)와 별개로 도시될지라도, 다른 예에서 메모리 컨트롤러(100)는 프로세서(108) 내에, 컴퓨터 시스템(106)의 메모리 모듈 내에 배치될 수 있거나 메모리 디바이스(110)과 공존할 수 있다.
예시적인 메모리 디바이스(110)는 데이터의 비트를 메모리 비트 셀에 저장한다. 예시된 예에서, 메모리 비트 셀은 메모리 디바이스(110)의 어드레스 가능한 데이터 폭(예를 들면, 8 비트, 16 비트, 32 비트, 64 비트, 128 비트 등)에 상응하는 큰 길이로 액세스될 수 있다. 일부 예에서, 메모리 컨트롤러(100)는 어드레스 가능한 데이터 폭(예를 들면, 1 KB, 4 KB, 1 MB 등)보다 큰 데이터 블록을 조작한다. 예시된 예에서, 메모리 디바이스(110)는 랜덤 액세스 메모리(random access memory, RAM)이며, 메모리 디바이스(110) 내 메모리 비트 셀의 어드레스 가능한 데이터 폭은 어드레스 가능한 메모리 장소를 정의한다. 다른 예에서, 다른 유형의 메모리 또는 상이한 유형의 메모리의 조합이 메모리 디바이스(110)를 구현하는데 사용될 수 있다. 어드레스 가능한 메모리 장소의 데이터 폭(예를 들면, 8 비트, 16 비트, 32 비트, 64 비트, 128 비트 등)은 컴퓨터 시스템(106)의 특정한 아키텍처 및/또는 메모리 디바이스(110)의 아키텍처에 달려 있다.
예시적인 어드레스 변환기(102)는 예시적인 프로세서(108)와 인터페이스하는 로직을 갖고 있다. 예시적인 어드레스 변환기(102)는 또한 예시적인 PAD(104)와 인터페이스하는 로직을 갖고 있다. 예시적인 어드레스 변환기(102)는 호스트 물리 어드레스를 비롯하여 예시적인 프로세서(108)로부터 메모리 액세스 커맨드를 수신한다. 예시적인 어드레스 변환기(102)는 수신된 호스트 물리 어드레스를 대응하는 PAD 어드레스로 변환하고 변환된 PAD 어드레스를 예시적인 PAD(104)에 제공한다. 예시적인 어드레스 변환기(102)는 또한 아래에서 더 상세히 기술되는 바와 같이 PAD(104)가 프로그램 가능한 동작을 수행하게 하는 다른 정보(예를 들면, 커맨드)를 예시적인 PAD(104)에 전송한다.
예시적인 PAD(104)는 도 1c에 예시된 바와 같이 논리적 PAD의 어레이로서 논리적으로 표현될 수 있다. 각각의 논리적 PAD는 예시적인 메모리 디바이스(110)의 상이한 어드레스 가능한 메모리 장소를 어드레스 지정한다. PAD(104)는 상이한 논리적 PAD를 구현하는데 사용될 수 있는 재구성 가능하거나 프로그램 가능한 로직(예를 들면, 재 프로그램 가능한 로직 회로)를 사용하여 구현된다. 대안으로 또는 부가적으로, PAD(104)는 재구성 가능한 룩업 테이블과 같은 데이터 구조체를 사용하여 구현될 수 있다.
도 1c는 도 1a 및 도 1b의 PAD(104)를 도 1a 및 도 1b의 예시적인 메모리 컨트롤러(100) 내 복수의 논리적 PAD(103)으로서 예시한다. (논리 PAD(103-0 내지 103-n)로서 표현된) 각각의 논리 PAD(103)는 메모리 디바이스(110)의 (어드레스 가능한 메모리 장소(120-0 내지 120-n)로서 표현된) 하나의 특정한 어드레스 가능한 메모리 장소(120)를 어드레스 지정하는 대응하는 PAD 어드레스를 갖는다. 예시된 예에서, 커맨드를 실행하기 위하여, 어드레스 변환기(102)는 변환된 PAD 어드레스(116)를 커맨드와 함께 PAD(104)로 브로드캐스팅한다(예를 들면, 각각의 논리 PAD(103)로 전송한다). 각각의 변환된 PAD 어드레스(116)를 수신하는 논리 PAD(103)는 커맨드가 논리 PAD(103)의 PAD 어드레스(116)에 적용 가능하면 커맨드에 의해 명시된 동작을 수행한다.
예시된 예에서, PAD 어드레스 변경기(112)는 논리 PAD(103)의 PAD 어드레스(116)를 변경하여 그 PAD 어드레스(116)를 (하드웨어 메모리 어드레스(118-0 내지 118-n)으로서 표현되는) 상이한 하드웨어 메모리 어드레스로 리매핑하기 위해 제공된다. 예를 들면, PAD 어드레스 변경기(112)는 PAD(104)를 실시하는데 사용되는 논리 회로 및/또는 룩업 테이블을 재 프로그래밍한다. 논리 PAD(103)의 PAD 어드레스(116)가 변경될 때, 논리 PAD(103)는 예시적인 메모리 디바이스(110)의 동일한 어드레스 가능한 메모리 장소(120)와 여전히 통신하고 있다. 그러나, 예시적인 어드레스 변환기(102)는 항시 특정한 호스트 물리 어드레스(114)를 동일한 PAD 어드레스(116)로 변환하기 때문에, 그리고 동일한 PAD 어드레스(116)는 PAD 어드레스 변경기(112)에 의해 상이한 하드웨어 메모리 어드레스(118)로 리매핑되기 때문에, PAD(104)는 어드레스 변환기(102)에 의해 제공되는 PAD 어드레스(116)를 상이한 하드웨어 메모리 어드레스(118)로 디코딩한다. 이러한 방식으로, PAD 어드레스 변경기(112) 및 PAD(104)는 호스트 물리 어드레스(114)와 상이한 어드레스 가능한 메모리 장소(120)에 대응하는 하드웨어 메모리 어드레스(118) 간의 매핑을 변경한다. 일부 예에서, PAD 어드레스 변경기(112)는 각각의 논리 PAD(103) 내에 내장되어 있다.
본 출원에서 개시되는 예는 어드레스 가능한 메모리 사이에서 어떠한 값도 물리적으로 이동시키지 않고 어드레스 가능한 메모리 장소들의 어레이 내에 새로운 값을 삽입하는데 사용될 수 있다. 본 출원에서 개시되는 예는 또한 호스트 물리 어드레스와 하드웨어 메모리 어드레스 간의 매핑을 변경함으로써 어드레스 가능한 메모리 장소들의 어레이 내에 새로운 값을 삽입하는데 사용될 수 있다. 예를 들면, 도 2는 대응하는 값{a, b, c, d, e, NULL, NULL, NULL}을 저장하는 여덟 개의 어드레스 가능한 메모리 장소(204-0 내지 204-7)를 갖는 어레이(202)를 예시한다. 여덟 개의 어드레스 가능한 메모리 장소(204-0 내지 204-7)의 하드웨어 메모리 어드레스(hardware memory addresses, HAddr)는 각기 {0, 1, 2, 3, 4, 5, 6, 7}이다.
도 2는 예시적인 어드레스 변환기(102)에 의해 여덟 호스트 물리 어드레스(206-0 내지 206-7){HPA=0, HPA=1, HPA=2, HPA=3, HPA=4, HPA=5, HPA=6, HPA=7}가 대응하는 논리 PAD(208-0 내지 208-7)의 대응하는 PAD 어드레스(PAD Addr=0-7) (예를 들면, 도 1c의 PAD 어드레스(116))로 변환된 것을 예시한다. 도 2의 예시된 예에서, 호스트 물리 어드레스(206-0 내지 206-7)는 도 1c의 호스트 물리 어드레스(114)와 유사하거나 동일하며, PAD 어드레스(PAD Addr=0-7)는 도 1c의 PAD 어드레스(116)와 유사하거나 동일하다. 각각의 논리 PAD(208-0 내지 208-7)는 도 1c의 논리적 PAD(103-0 내지 103-7)의 상이한 하나씩을 나타낸다. 도 2의 예시된 예에서, 호스트 물리 어드레스(206-0)(HPA=0)는 논리 PAD(208-0)에 대응하는 PAD 어드레스 0(PAD Addr=0)로 변환되고, 호스트 물리 어드레스(206-1)(HPA=1)는 논리 PAD(208-1)에 대응하는 PAD 어드레스 1(PAD Addr=1)로 변환되고, 호스트 물리 어드레스(206-2)(HPA=2)는 논리 PAD(208-2)에 대응하는 PAD 어드레스 2(PAD Addr=2)로 변환되고, 호스트 물리 어드레스(206-3)(HPA=3)는 논리 PAD(208-3)에 대응하는 PAD 어드레스 3(PAD Addr=3)으로 변환되고, 호스트 물리 어드레스(206-4)(HPA=4)는 논리 PAD(208-4)에 대응하는 PAD 어드레스 4(PAD Addr=4)로 변환되고, 호스트 물리 어드레스(206-5)(HPA=5)는 논리 PAD(208-5)에 대응하는 PAD 어드레스 5(PAD Addr=5)로 변환되고, 호스트 물리 어드레스(206-6)(HPA=6)는 논리 PAD(208-6)에 대응하는 PAD 어드레스 6(PAD Addr=6)으로 변환되며, 호스트 물리 어드레스(206-7)(HPA=7)는 논리 PAD(208-7)에 대응하는 PAD 어드레스 7(PAD Addr=7)로 변환된다.
이러한 PAD 어드레스(PAD Addr=0-7)의 각각은 도 2에 도시된 바와 같이 대응하는 어드레스 가능한 메모리 장소(204-0 내지 204-7)의 하드웨어 메모리 어드레스(예를 들면, 도 1c의 하드웨어 메모리 어드레스(118-0 내지 118-7)로 디코딩된다. 도 2의 예시된 예에서, PAD(104)는 논리 PAD(208-0)의 PAD 어드레스 0(PAD Addr=0)를 어드레스 가능한 메모리 장소(204-0)(HAddr=0)로 디코딩하고, PAD(104)는 논리 PAD(208-1)의 PAD 어드레스 1(PAD Addr=1)를 어드레스 가능한 메모리 장소(204-1)(HAddr=1)로 디코딩하고, PAD(104)는 논리 PAD(208-2)의 PAD 어드레스 2(PAD Addr=2)를 어드레스 가능한 메모리 장소(204-2)(HAddr=2)로 디코딩하고, PAD(104)는 논리 PAD(208-3)의 PAD 어드레스 3(PAD Addr=3)를 어드레스 가능한 메모리 장소(204-3)(HAddr=3)으로 디코딩하고, PAD(104)는 논리 PAD(208-4)의 PAD 어드레스 4(PAD Addr=4)를 어드레스 가능한 메모리 장소(204-4)(HAddr=4)로 디코딩하고, PAD(104)는 논리 PAD(208-5)의 PAD 어드레스 5(PAD Addr=5)를 어드레스 가능한 메모리 장소(204-5)(HAddr=5)로 디코딩하고, PAD(104)는 논리 PAD(208-6)의 PAD 어드레스 6(PAD Addr=6)를 어드레스 가능한 메모리 장소(204-6)(HAddr=6)로 디코딩하며, PAD(104)는 논리 PAD(208-7)의 PAD 어드레스 7(PAD Addr=7)를 어드레스 가능한 메모리 장소(204-7)(HAddr=7)로 디코딩한다.
도 3은 예시적인 PAD 어드레스 변경기(112)가 논리 PAD(103) 중 네 개 PAD의 PAD 어드레스를 변경한 후 도 2의 여덟 호스트 물리 어드레스(306-0 내지 306-7)를 PAD 어드레스(PAD Addr=0-7)로 변환하고 PAD 어드레스(PAD Addr=0-7)를 하드웨어 메모리 어드레스(HAddr=0-7)로 디코딩하는 것을 예시한다. 구체적으로, 예시적인 PAD 어드레스 변경기(112)는 도 2의 논리 PAD(208-2)의 PAD 어드레스를 PAD Addr=3에 대응하는 새로운 논리 PAD(308-2)로 변경하고, 도 2의 논리 PAD(208-3)의 PAD 어드레스를 PAD Addr=4에 대응하는 새로운 논리 PAD(308-3)로 변경하고, 도 2의 논리 PAD(208-4)의 PAD 어드레스를 PAD Addr=5에 대응하는 새로운 논리 PAD(308-5)로 변경하며, 도 2의 논리 PAD(208-5)의 PAD 어드레스를 PAD Addr=2에 대응하는 새로운 논리 PAD(308-5)로 변경한다. 도 3의 예시된 예에서, 논리 PAD(308-2 내지 308-5)는 예시적인 PAD 어드레스 변경기(112)에 의해 수행된 전술한 PAD 어드레스 변경으로 인해 생긴 상이한 논리 PAD를 나타낸다.
도 3의 예시된 예에서, 호스트 물리 어드레스(206-0)(HPA=0)는 여전히 논리 PAD(208-0)에 해당하는 PAD 어드레스 0(PAD Addr=0)로 변환되고, 호스트 물리 어드레스(206-1)(HPA=1)는 여전히 논리 PAD(208-1)에 해당하는 PAD 어드레스 1(PAD Addr=1)로 변환되고, 호스트 물리 어드레스(206-6)(HPA=6)는 여전히 논리 PAD(208-6)에 해당하는 PAD 어드레스 6(PAD Addr=6)으로 변환되고, 호스트 물리 어드레스(206-7)(HPA=7)는 여전히 논리 PAD(208-7)에 해당하는 PAD 어드레스 7(PAD Addr=7)로 변환된다.
또한, 각각의 PAD 어드레스(PAD Addr=0-7)는 도 3에 도시된 바와 같이 대응하는 어드레스 가능한 메모리 장소(204-0 내지 204-7)의 하드웨어 메모리 어드레스(HAddr=0-7)(예를 들면, 도 1c의 하드웨어 메모리 어드레스(118-0 내지 118-n))로 디코딩된다. 도 3의 예시된 예에서, PAD(104)는 논리 PAD(208-0)의 PAD 어드레스 0(PAD Addr=0)를 어드레스 가능한 메모리 장소(204-0)(HAddr=0)로 디코딩하고, PAD(104)는 논리 PAD(208-1)의 PAD 어드레스 1(PAD Addr=1)를 어드레스 가능한 메모리 장소(204-1)(HAddr=1)로 디코딩하고, PAD(104)는 논리 PAD(308-5)의 PAD 어드레스 2(PAD Addr=2)를 어드레스 가능한 메모리 장소(204-5)(HAddr=5)로 디코딩하고, PAD(104)는 논리 PAD(308-2)의 PAD 어드레스 3(PAD Addr=3)을 어드레스 가능한 메모리 장소(204-2)(HAddr=2)로 디코딩하고, PAD(104)는 논리 PAD(308-3)의 PAD 어드레스 4(PAD Addr=4)를 어드레스 가능한 메모리 장소(204-3)(HAddr=3)로 디코딩하고, PAD(104)는 논리 PAD(308-4)의 PAD 어드레스 5(PAD Addr=5)를 어드레스 가능한 메모리 장소(204-4)(HAddr=4)로 디코딩하고, PAD(104)는 논리 PAD(208-6)의 PAD 어드레스 6(PAD Addr=6)를 어드레스 가능한 메모리 장소(204-6)(HAddr=6)로 디코딩하며, PAD(104)는 논리 PAD(208-7)의 PAD 어드레스 7(PAD Addr=7)를 어드레스 가능한 메모리 장소(204-7)(HAddr=7)로 디코딩한다.
전술한 수정된 메모리 매핑 이외에, 도 1b 및 도 1c의 메모리 컨트롤러(100)는 논리 PAD(308-5)(PAD Addr=2)에 대응하는 어드레스 가능한 메모리 장소(204-5)(HAddr=5)에다 값 'f'를 삽입한다. 전술한 동작과 유사하거나 동일한 동작을 이용하여, 프로세서가 호스트 물리 어드레스 0, 1, 2, 3, 4 및 5 내 데이터를 판독하고자 요청할 때, 반환된 값은 각기 'a', 'b', 'f', 'c', 'd' 및 'e'이다. 본 출원에서 개시되는 예는 프로세서로부터 비교적 적은 수의 메모리 관리 자원을 사용하거나 메모리 관리 자원을 전혀 사용하지 않고, 비교적 적은 수의 데이터 액세스를 사용하거나 데이터 액세스를 전혀 사용하지 않고 이렇게 어드레스 가능한 메모리 장소들 사이에서 데이터를 카피하는 결과를 달성하며, 종래의 메모리 컨트롤러에 의해 사용되는 것보다 비교적 적은 시간 내에 요청된 데이터 액세스 동작(예를 들면, 값 'f'의 삽입)을 수행한다.
도 4a 및 도 4b는 예시적인 상태도(400) 및 도 1c 및 도 2 및 도 3의 논리 PAD(103)를 구현하는데 사용되는 예시적인 논리 회로(401)를 예시한다. 예시된 예에서, 논리 회로(401)는 PAD 어드레스(116)를 하드웨어 메모리 어드레스(118)로 디코딩한다. 예시된 예에서, PAD(104)는 예시적인 어드레스 변환기 인터페이스(402)(예를 들면, 도 1a 내지 도 1d의 어드레스 변환기(102)와 통신하기 위함) 및 메모리 인터페이스(404)(예를 들면, 도 1a 내지 도 1c의 메모리 디바이스(110) 및/또는 도 1d의 메모리 컨트롤러(122)와 통신하기 위함)를 가지고 있다. 예시적인 어드레스 변환기 인터페이스(402)는 커맨드 라인(406)(at_pad_cmd), 어드레스 라인(예를 들면, 시작 어드레스 라인)(408)(at_pad_addr), 서브세트 종료 어드레스 라인(409)(at_pad_addr_e), 데이터 기록 라인(410)(at_pad_data_wr), 데이터 판독 라인(412)(pad_ad_data_rd), 및 확인(acknowledge) 라인(414)(pad_at_ack)을 포함한다.
예시적인 메모리 인터페이스(404)는 메모리 어드레스 라인(418)(pad_loc_req), 메모리 기록 라인(420)(pad_loc_write), 메모리 데이터 기록 라인(422)(pad_loc_data_wr), 메모리 확인 라인(424)(loc_pad_ack), 및 메모리 데이터 판독 라인(426)(loc_pad_data_rd)을 포함한다.
커맨드 라인(406)은 예시적인 PAD(104)에 의해 처리되는 커맨드를 운반한다. 도 4a 및 도 4b의 예에서, 예시적인 커맨드는 무동작(Nop), 기록(Write), 판독(Read), 시프트 업(Shift Up), 시프트 다운(Shift Down), 리맵핑 활성화(Remap Activate), 리맵핑(Remap), 삽입(Insert), 삭제(Delete), 부분적 시프트 업(Partial Shift Up), 및 부분적 시프트 다운(Partial Shift Down)이다. 그러나, 도 4a 및 도 4b의 예시적인 커맨드 이외에 또는 그 대신으로 다른 커맨드 또한 구현될 수 있다. 무동작, 시프트 업, 시프트 다운, 삽입, 삭제, 부분적 시프트 업, 및 부분적 시프트 다운 커맨드는 다중 논리 PAD 커맨드로서, 이는 이러한 커맨드가 다수의 예시적인 논리 PAD(103)(도 1c, 도 2 및 도 3)에게 지시를 내린다는 것을 의미한다. 판독, 기록 리맵핑 활성화, 및 리맵핑 커맨드는 단일의 논리 PAD 커맨드로서, 이는 이러한 커맨드가 오직 예시적인 논리 PAD(103) 중 하나씩을 선택하여 지시를 내린다는 것을 의미한다. 이러한 커맨드는 아래에서 더 상세히 논의된다.
어드레스 라인(408)은 PAD 어드레스(116)를 운반한다. 단일의 논리 PAD 커맨드에는 그 커맨드의 타겟인 논리 PAD(103)의 PAD 어드레스를 명시하는 어드레스 라인(408)에 실린 어드레스가 동반된다. 예시적인 프로세서(108)로부터 호스트 물리 어드레스를 수신한 후, 예시적인 어드레스 변환기(102)는 호스트 물리 어드레스를 PAD 어드레스로 변환하고 이렇게 변환된 PAD 어드레스를 어드레스 라인(408)에 실어 예시적인 PAD(104)로 전송한다.
서브세트 종료 어드레스 라인(409)은 부분적 시프트 업 및 부분적 시프트 다운 커맨드에 대하여 사용되는 서브세트 종료 어드레스에 대응하는 PAD 어드레스(116)를 운반한다. 예시적인 프로세서(108)가 부분적 시프트 업 또는 부분적 시프트 다운 커맨드를 전송할 때, 프로세서(108)는 또한 호스트 물리 어드레스 및 길이를 명시한다. 길이는 시프트 업 또는 시프트 다운될 PAD 어드레스(116)의 서브세트 내 PAD 어드레스(116)의 숫자에 대응한다. 예시적인 프로세서(108)로부터 호스트 물리 어드레스 및 길이를 수신한 후, 예시적인 어드레스 변환기(102)는 호스트 물리 어드레스를 PAD 어드레스로 변환하고 이렇게 변환된 PAD 어드레스를 어드레스 라인(408)에 실어 예시적인 PAD(104)로 전송한다. 또한 예시적인 어드레스 변환기(102)는 길이를 변환된 PAD 어드레스에 가산하고 하나(1)를 감산함으로써 시프트 업 또는 시프트 다운 커맨드에 포함될 PAD 어드레스(116)의 서브세트 내 마지막 어드레스에 대응하는 서브세트 종료 PAD 어드레스를 결정한다. 그런 다음 예시적인 어드레스 변환기는 이러한 서브세트 종료 PAD 어드레스를 서브세트 종료 어드레스 라인(409)에 실어 예시적인 PAD(104)로 전송한다.
데이터 기록 라인(410)은 해당하는 기록 또는 삽입 커맨드에 기초하여 예시적인 메모리 디바이스(110)에 기록될 데이터를 운반한다. 데이터 판독 라인(412)은 해당하는 판독 커맨드에 기초하여 예시적인 메모리 디바이스(110)로부터 판독된 데이터를 포함하는 데이터를 운반한다. 확인 라인(414)은 논리 PAD(103)가 기록, 판독, 삽입 또는 리맵핑 커맨드를 수행한 후 예시적인 논리 PAD(103)에 의해 반환되는 확인 신호를 운반한다. 확인 라인(414)에 실린 확인 신호는 기록, 판독, 삽입 또는 리맵핑 커맨드에 의해 촉구된 동작이 완료된 것을 사실 확인해준다.
무동작 커맨드(CMP_NOP)는 아무 동작을 하지 않는 커맨드이며, 예시적인 PAD(104)가 동작을 수행하지 않게 한다. 도 4b의 상태도에서 도시된 바와 같이, CMD_NOP는 예시적인 PAD(104)가 유휴 상태(S_IDLE)(430)로 남아 있게 한다. Nop 커맨드는 어떠한 다른 커맨드도 명시되지 않았을 때 사용된다.
기록 커맨드(CMD-WR)는 데이터를 예시적인 메모리 디바이스(110)에 기록하는데 사용된다. 예시적인 프로세서(108)가 데이터를 예시적인 어드레스 가능한 메모리 장소(120)에 기록할 때, 프로세서(108)는 호스트 물리 어드레스뿐 만 아니라 그 호스트 물리 어드레스에 대응하는 어드레스 가능한 메모리 장소(120)에 기록될 데이터 값을 명시한다. 예시적인 어드레스 변환기(102)는 명시된 호스트 물리 어드레스를 PAD 어드레스로 변환한다. 그런 다음 예시적인 어드레스 변환기(102)는 기록 커맨드(CMD_WR), 변환된 PAD 어드레스 및 그 변환된 PAD 어드레스를 갖는 논리 PAD(103)에 기록될 데이터를 전송한다. 그러면 타겟의 논리 PAD(103)는 PAD 어드레스를 하드웨어 메모리 어드레스로 디코딩하며 데이터를 하드웨어 메모리 어드레스에서 대응하는 어드레스 가능한 메모리 장소(120)에 기록한다. 다른 모든 논리 PAD(103)는 변환된 PAD 어드레스가 이들의 PAD 어드레스로 디코딩된 것이 아니기 때문에 그 커맨드를 단순히 무시한다.
도 4b의 예에서, PAD(104)가 기록 커맨드 및 디코딩된 하드웨어 메모리 어드레스(CMD_WR 및 H_addr_eq)를 해당하는 어드레스 가능한 메모리 장소(120)로 전송할 때, 상태 머신(400)은 유휴 상태(S_IDLE)(430)에서 기록 상태(S_WR)(532)로 천이한다. 그런 다음 PAD(104)가 확인 신호를 확인 라인(414)(loc_pad_ack)에 실어 반환할 때, 예시적인 상태 머신(400)은 다시 기록 상태(S-WR)(432)에서 유휴 상태(S_IDLE)(430)로 천이한다.
도 5는 기록 커맨드(CMD_WR)의 타이밍도를 도시한다. 첫 클록 사이클(500)에서, 어드레스 변환기(102)(도 1a 내지 도 1c)는 기록 커맨드(CMD_WR)를 커맨드 라인(506)(at_pad_cmd)에 실어 전달하고, 어드레스 변환기(102)는 PAD 어드레스(ff1)를 어드레스 라인(408)(at_pad_addr)에 실어 전달하며, 어드레스 변환기(102)는 데이터(#ab50 aced)를 데이터 기록 라인(410)(at_pad_wr)에 실어 전달한다. 데이터가 예시적인 타겟의 논리 PAD(103)에 의해 해당하는 예시적인 메모리 디바이스(110)에 기록된 후, 논리 PAD(103)는 확인 신호를 확인 라인(414)(loc_pad_ack)에 실어 반환한다.
도 4b를 다시 참조하면, 판독 커맨드(CMD_RD)는 예시적인 메모리 디바이스(110)로부터 데이터를 판독하는데 사용된다. 예시적인 프로세서(108)가 데이터를 예시적인 어드레스 가능한 메모리 장소(120)로부터 판독할 때, 프로세서(108)는 데이터가 판독될 호스트 물리 어드레스를 명시한다. 예시적인 어드레스 변환기(102)는 명시된 호스트 물리 어드레스(예를 들면, 도 1c 및 도 1d의 호스트 물리 어드레스(114))를 PAD 어드레스(예를 들면, 도 1c 및 도 1d의 PAD 어드레스(116))로 변환한다. 그런 다음 예시적인 어드레스 변환기(102)는 판독 커맨드(CMD_RD) 및 변환된 PAD 어드레스를 그 변환된 PAD 어드레스를 가진 논리 PAD(103)로 어드레스 지정한다. 그러면 타겟의 논리 PAD(103)는 PAD 어드레스를 하드웨어 메모리 어드레스(예를 들면, 도 1c의 하드웨어 메모리 어드레스(118))로 디코딩하고 하드웨어 메모리 어드레스에서 대응하는 어드레스 가능한 메모리 장소(120)로부터 데이터를 판독한다. 다른 모든 논리 PAD(103)는 변환된 PAD 어드레스가 자기들의 PAD 어드레스로 디코딩되지 않았기 때문에 그 커맨드를 단순히 무시한다.
도 4b의 예에서, PAD(104)가 판독 커맨드 및 디코딩된 하드웨어 메모리 어드레스(CMD_RD 및 H_addr_eq)를 해당하는 어드레스 가능한 메모리 장소(120)로 전송할 때, 상태 머신(400)은 유휴 상태(S_IDLE)(430)에서 판독 상태(S_RD)(438)로 천이한다. 그런 다음 PAD(104)가 확인 신호를 확인 라인(414)(loc_pad_ack)에 실어 반환할 때, 예시적인 상태 머신(400)은 다시 판독 상태(S_RD)(438)에서 유휴 상태(S_IDLE)(430)로 천이한다.
도 6은 판독 커맨드(CMD_RD)의 타이밍도를 도시한다. 첫 클럭 사이클(600)에서, 어드레스 변환기(102)(도 1a 내지 도 1c)는 판독 커맨드(CMD_RD)를 커맨드 라인(406)(at_pad_cmd)에 실어 전달하며 어드레스 변환기(102)는 PAD 어드레스(8ef)를 어드레스 라인(408)(at_pad_addr)에 실어 전달한다. 데이터가 예시적인 타겟의 논리 PAD(103)에 의해 해당하는 예시적인 메모리 디바이스(110)로부터 판독된 후, 논리 PAD(103)는 확인 신호를 확인 라인(loc_pad_ack)에 실어 반환한다.
도 4b를 다시 참조하면, 시프트 업 커맨드(CMD_SHIFT_UP)는 모든 논리 PAD(103)의 PAD 어드레스(예를 들면, 도 1c 및 도 1d의 PAD 어드레스(116))를 시프트 업하는데 사용된다. 시프트 업을 실행하기 위해, 예시적인 어드레스 변환기(102)는 시프트 업 커맨드(CMD_SHIFT_UP)를 모든 논리 PAD(103)로 전송한다. 그러면 각각의 논리 PAD(103)는 그의 PAD 어드레스(116)를 하나(1)씩 증분한다. 예시된 예에서, 시프트 업 커맨드(CMD_SHIFT_UP)는 랩핑 동작(wrapping)을 지원하는데, 랩핑 동작에서 시프트 업 커맨드(CMD_SHIFT_UP)를 수신하면, 최고의 PAD 어드레스를 가진 논리 PAD(103)는 최저의 PAD 어드레스로 설정한다. 도 5b의 상태도(400)에서 도시된 바와 같이, CMD_SHIFT_UP는 예시적인 PAD(104)를 유휴 상태(S_IDLE)(430)에 머물게 한다. 이것은 단일의 사이클 동작이며 아무런 새로운 데이터도 저장되지 않기 때문에, 아무런 확인도 전송되지 않는다.
도 7은 시프트 업 커맨드(CMD_SHIFT_UP)의 타이밍도를 도시한다. 첫 클럭 사이클(700)에서, 어드레스 변환기(102)(도 1a 내지 도 1c)는 시프트 업 커맨드(CMD_SHIFT_UP)를 커맨드 라인(506)(at_pad_cmd)에 실어 전달한다.
도 4b를 다시 참조하면, 시프트 다운 커맨드(CMD_SHIFT_DN)는 모든 논리 PAD(103)의 PAD 어드레스(116)를 시프트 다운하는데 사용된다. 시프트 다운을 실행하기 위해, 예시적인 어드레스 변환기(102)는 시프트 다운 커맨드(CMD_SHIFT_DN)를 모든 논리 PAD(103)로 전송한다. 그러면 각각의 논리 PAD(103)는 그의 PAD 어드레스(116)를 하나(1)씩 감분한다. 예시된 예에서, 시프트 다운 커맨드(CMD_SHIFT_DN)는 랩핑 동작을 지원하는데, 랩핑 동작에서 시프트 다운 커맨드(CMD_SHIFT_DN)를 수신하면, 최저의 PAD 어드레스를 가진 논리 PAD(103)는 그의 PAD 어드레스를 최고의 PAD 어드레스로 설정한다. 도 4b의 상태도(400)에 도시된 바와 같이, CMD_SHIFT_DN는 예시적인 PAD(104)를 유휴 상태(S_IDLE)(430)에 머물게 한다. 이것은 단일의 사이클 동작이며 아무런 새로운 데이터도 저장되지 않기 때문에 아무런 확인도 전송되지 않는다.
도 8은 시프트 다운 커맨드(CMD_SHIFT_DN)의 타이밍도를 도시한다. 첫 클럭 사이클(800)에서, 어드레스 변환기(102)(도 1a 내지 도 1c)는 시프트 다운 커맨드(CMD_SHIFT_DN)를 커맨드 라인(커맨드 라인(406))(at_pad_cmd)에 실어 전달한다.
도 4b를 다시 참조하면, 리맵핑 활성화 커맨드(CMD_REMAP_ACTIVATE)) 및 리맵핑 커맨드(CMD_REMAP)는 둘 이상의 논리 PAD(103)의 PAD 어드레스(116)를 리매핑하는데 사용된다. 리맵핑 활성화 커맨드(CMD_REMAP_ACTIVATE)를 실행하기 위하여, 프로세서는 리매핑될 둘 이상의 호스트 물리 어드레스(114)를 명시한다. 예시적인 어드레스 변환기(102)는 명시된 호스트 호스트 물리 어드레스(114)를 PAD 어드레스(116)로 변환한다. 그런 다음 예시적인 어드레스 변환기(102)는 리맵핑 활성화 커맨드(CMD_REMAP_ACTIVATE) 및 변환된 PAD 어드레스(116)를 그 변환된 PAD 어드레스(116)를 가진 논리 PAD(103)로 전송한다. 그러면 타겟의 논리 PAD(103)는 PAD 어드레스(116)를 하드웨어 메모리 어드레스(118)로 디코딩하며 리맵핑 준비 플래그가 논리 PAD(103)에서 설정된다. 리맵핑 준비 플래그는 리맵핑한 후 특정 시간에 하나 이상의 요소가 동일한 PAD 어드레스(116)를 갖지 않도록 논리 PAD(103)가 리맵핑 모드에 있다는 것을 표시한다.
도 4b의 예에서, PAD(104)가 리맵핑 활성화 커맨드 및 디코딩된 하드웨어 메모리 어드레스(CMD_REMAP_ACTIVATE 및 H_Addr_eq)를 전송할 때, 상태 머신(400)은 유휴 상태(S_IDLE)(430)에서 리맵핑 활성화 상태(S-REMAP-ACT)(436)로 천이한다.
리맵핑 활성화 커맨드(CMD_REMAP_ACTIVATE)를 실행한 후, 리맵핑 커맨드(CMD_REMAP)가 실행된다. 리맵핑 커맨드(CMD_REMAP)를 실행하기 위해, 프로세서는 리맵핑될 제 1 호스트 물리 어드레스(114) 다음에 리맵핑할 제 2 호스트 물리 어드레스(114)를 명시한다. 예시적인 어드레스 변환기(102)는 명시된 호스트 물리 어드레스(114)를 대응하는 PAD 어드레스(116)로 변환한다. 그런 다음 예시적인 어드레스 변환기(102)는 리맵핑 커맨드(CMD_REMAP) 및 변환된 PAD 어드레스(116)를 그 변환된 PAD 어드레스(116)를 가진 논리 PAD(103)로 전송한다. 그러면 타겟의 논리 PAD(103)는 PAD 어드레스(116)를 하드웨어 메모리 어드레스(118)로 디코딩하며 제 1 프로세서에 의해 명시된 호스트 물리 어드레스(114)에 대응하는 제 1의 변환된 PAD 어드레스(116)를 제 2 프로세서에 의해 명시된 호스트 물리 어드레스(114)에 대응하는 제 2의 변환된 PAD 어드레스(116)로 리맵핑한다.
도 4b의 예에서, PAD(104)가 리맵핑 커맨드 및 디코딩된 하드웨어 메모리 어드레스(CMD_REMAP 및 H_Addr_eq)를 전송할 때, 상태 머신(400)은 리맵핑 활성화 상태(S_REMAP_ACT)(436)에서 리맵핑 상태(S-REMAP)(434)로 천이한다.
도 9는 리맵핑 활성화 커맨드(CMD_REMAP_ACTIVATE) 및 리맵핑 커맨드(CMD_REMAP)의 타이밍도를 도시한다. 제 1 클럭 사이클(900)에서, 어드레스 변환기(102)(도 1a 내지 도 1c)는 리맵핑 활성화 커맨드(CMD_REMAP_ACTIVATE)를 커맨드 라인(406)(at_pad_cmd)에 실어 전달하며, 어드레스 변환기(102)는 제 1 PAD 어드레스(66d)를 어드레스 라인(408)(at_pad_addr)에 실어 전달한다. 제 2 클럭 사이클(902)에서, 어드레스 변환기(102)는 계속하여 리맵핑 활성화 커맨드(CMD_REMAP_ACTIVATE)를 커맨드 라인(406)(at_pad_cmd)에 실어 전달하며, 어드레스 변환기(102)는 제 2 PAD 어드레스(c0a)를 어드레스 라인(408)(at_pad_addr)에 실어 전달한다. 제 3 클럭 사이클(904)에서, 어드레스 변환기(102)는 리맵핑 커맨드(CMD_REMAP)를 커맨드 라인(406)(at_pad_cmd)에 실어 전달하며, 어드레스 변환기(102)는 제 1 PAD 어드레스(66d)를 어드레스 라인(408)(at_pad_addr)에 실어 전달한다. 제 4 클럭 사이클(906)에서, 어드레스 변환기(102)는 무동작 커맨드(CMD_NOP)를 커맨드 라인(406)(at_pad_cmd)에 실어 전달하며, 어드레스 변환기(102)는 제 2 PAD 어드레스(c0a)를 어드레스 라인(408)(at_pad_addr)에 실어 전달한다. 제 5 클럭 사이클(908)에서, 어드레스 변환기(102)는 리맵핑 커맨드(CMD_REMAP)를 커맨드 라인(406)(at_pad_cmd)에 실어 전달하며, 어드레스 변환기(102)는 제 2 PAD 어드레스(c0a)를 어드레스 라인(408)(at_pad_addr)에 실어 전달한다. 제 6 클럭 사이클(910)에서, 어드레스 변환기(102)는 무동작 커맨드(CMD_NOP)를 커맨드 라인(406)(at_pad_cmd)에 실어 전달하며, 어드레스 변환기(102)는 제 1 PAD 어드레스(66d)를 어드레스 라인(408)(at_pad_addr)에 실어 전달한다. 논리 PAD(103)의 PAD 어드레스(116)가 변경된 후, 논리 PAD(103)는 확인 라인(414)(loc_pad_ack)에 실린 확인 신호를 반환하여 리맵핑 동작의 성공적인 완료를 표시한다.
다시 도 4b를 참조하면, 삽입 커맨드(CMD_INSERT)는 어드레스 가능한 메모리 장소들의 어레이에서 특정한 어드레스 가능한 메모리 장소(120)에 데이터 값을 삽입하는데 사용된다. 값을 어드레스 가능한 메모리 장소(120)에 삽입하기 위하여, 예시적인 프로세서(108)는 삽입 커맨드(CMD_INSERT)와 함께 삽입될 데이터 값 및 그 삽입이 이루어질 호스트 물리 어드레스(114)를 전송한다. 예시적인 어드레스 변환기(102)는 명시된 호스트 물리 어드레스(114)를 대응하는 PAD 어드레스(116)로 변환하고 변환된 PAD 어드레스(116), 데이터 값 그리고 삽입 커맨드(CMD_INSERT)를 각각의 논리 PAD(103)로 전송한다.
논리 PAD(103)가 삽입 커맨드(CMD_INSERT)를 수신할 때, 논리 PAD(103)의 PAD 어드레스(116)가 명시된 PAD 어드레스(116)보다 작으면, 논리 PAD(103)는 아무런 동작도 하지 않는다. 삽입 커맨드(CMD_INSERT)를 수신하는 논리 PAD(103)의 PAD 어드레스(116)가 논리 PAD(103) 어레이의 마지막 PAD 어드레스(116)이면, 논리 PAD(103)는 그의 PAD 어드레스(116)를 삽입 커맨드(CMD_INSERT)에 동반하는 PAD 어드레스(116)로 설정하고, 삽입 커맨드(CMD_INSERT)에 동반하는 데이터 값을 논리 PAD(103)와 연관된 메모리 디바이스(110)에 기록한다. 그렇지 않고, 삽입 커맨드(CMD_INSERT)를 수신하는 논리 PAD(103)의 PAD 어드레스(116)가 삽입 커맨드(CMD_INSERT)에 동반하는 PAD 어드레스(116)보다 크거나 같으면, 논리 PAD(103)의 PAD 어드레스(116)는 하나(1)씩 증분된다.
도 4b의 예에서, PAD(104)가 삽입 커맨드 및 논리 PAD(103)들의 어레이의 마지막 PAD 어드레스(116)에 대응하는 디코딩된 하드웨어 어드레스(CMD_INSERT 및 H_addr_eq)를 대응하는 어드레스 가능한 메모리 장소(120)로 전송할 때, 또는 PAD(104)가 삽입 커맨드 및 명시된 PAD 어드레스(116)에 대응하는 어드레스보다 크거나 같은 디코딩된 하드웨어 어드레스(CMD_INSERT 및 (H_addr_eq) || (H_addr_gr))를 대응하는 어드레스 가능한 메모리 장소(120)에 전송할 때, 상태 머신(400)은 유휴 상태(S_IDLE)에서 삽입 상태(S_INSERT)(440)로 천이한다. 그런 다음 PAD(104)가 확인 신호를 확인 라인(414)(loc_pad_ack)에 실어 반환할 때 예시적인 상태 머신(400)은 다시 삽입 상태(S_INSERT)에서 유휴 상태(S_IDLE)(430)로 천이한다.
도 10은 삽입 커맨드(CMD_INSERT)의 타이밍도를 도시한다. 제 1 클럭 사이클(1000)에서, 어드레스 변환기(102)(도 1a 내지 도 1c)는 삽입 커맨드(CMD_INSERT)를 커맨드 라인(406)(at_pad_cmd)에 실어 전달하며, 어드레스 변환기(102)는 PAD 어드레스(5db)를 어드레스 라인(408)(at_pad_addr)에 실어 전달하며 어드레스 변환기(102)는 데이터(*ad5 e177 0c33 5339)를 데이터 기록 라인(410)(at_pad_wr)에 실어 전달한다. 적절한 논리 PAD(103)에 의해 데이터가 기록된 후, 논리 PAD(103)는 확인 신호를 확인 라인(414)(loc_pad_ack)에 실어 반환한다.
도 4b를 다시 참조하면, 삭제 커맨드(CMD_DELETE)는 어드레스 가능한 메모리 장소들의 어레이로부터 특정 어드레스 가능한 메모리 장소(120)에 있는 데이터 값을 제거하는데 사용된다. 어드레스 가능한 메모리 장소(120)로부터 값을 삭제하기 위하여, 예시적인 프로세서(108)는 삭제 커맨드(CMD_DELETE)와 함께 그 삭제가 일어나는 호스트 물리 어드레스(114)를 전송한다. 예시적인 어드레스 변환기(102)는 명시된 호스트 물리 어드레스(114)를 대응하는 PAD 어드레스(116)로 변환하고 그 변환된 PAD 어드레스(116) 및 삭제 커맨드(CMD_DELETE)를 각각의 논리 PAD(103)로 전송한다.
논리 PAD(103)가 삭제 커맨드(CMD_DELETE)를 수신할 때, 논리 PAD(103)의 PAD 어드레스(116)가 명시된 PAD 어드레스(116)보다 작으면, 논리 PAD(103)는 아무런 동작도 하지 않는다. 삭제 커맨드(CMD_DELETE)를 수신하는 논리 PAD(103)의 PAD 어드레스(116)가 삭제 커맨드(CMD_DELETE)에 동반하는 PAD 어드레스(116)와 같으면, 논리 PAD(103)의 PAD 어드레스(116)는 논리 PAD(103)들의 어레이의 최대 어드레스로 설정된다. 그렇지 않고, 삭제 커맨드(CMD_DELETE)를 수신하는 논리 PAD(103)의 PAD 어드레스(116)가 삭제 커맨드(CMD_DELETE)에 동반되는 PAD 어드레스(116) 보다 크면, 논리 PAD(103)의 PAD 어드레스(116)는 하나(1)씩 감분(decrement)된다. 도 4b의 상태 머신(400)에서 도시된 바와 같이, CMD_DELETE는 예시적인 PAD(104)를 유휴 상태(S_IDLE)(430)에 머물게 한다.
도 11은 삭제 커맨드(CMD_DELETE)의 타이밍도를 도시한다. 첫 클럭 사이클(1100)에서, 어드레스 변환기(102)(도 1a 내지 도 1c)는 삭제 커맨드(CMD_DELETE)를 커맨드 라인(406)(at_pad_cmd)에 실어 전달하며 어드레스 변환기(102)는 PAD 어드레스(3db)를 어드레스 라인(408)(at_pad_addr)에 실어 전달한다.
도 4b를 다시 참조하면, 부분적 시프트 업 커맨드(CMD_SHIFT_UP_P)는 논리 PAD(103)들의 서브세트의 PAD 어드레스(예를 들면, 도 1c 및 도 1d의 PAD 어드레스(116))를 시프트 업하는데 사용된다. 부분적 시프트 업을 실행하기 위하여, 예시적인 프로세서(108)는 시프트 업이 시작하게 될 호스트 물리 어드레스 및 시프트 업될 어드레스 가능한 메모리 장소(120)의 숫자에 대응하는 길이를 명시한다. 예시적인 어드레스 변환기(102)는 명시된 호스트 물리 어드레스를 PAD 어드레스로 변환하고 변환된 PAD 어드레스에 길이를 가산하고 하나(1)를 감산(예를 들면, ('길이' + '변환된 PAD 어드레스') - )함으로써 서브세트 종료 PAD 어드레스를 결정한다. 그런 다음 예시적인 어드레스 변환기(102)는 부분적 시프트 업 커맨드(CMD_SHIFT_UP_P), 변환된 PAD 어드레스 및 결정된 서브세트 종료 PAD 어드레스를 모든 논리 PAD(103)로 전송한다.
논리 PAD(103)가 부분적 시프트 업 커맨드(CMD_SHIFT_UP_P)를 수신할 때, 논리 PAD(103)의 PAD 어드레스가 명시된 PAD 어드레스보다 작거나 서브세트 종료 PAD 어드레스보다 크면, 논리 PAD(103)는 아무런 동작도 하지 않는다. 부분적 시프트 업 커맨드(CMD_SHIFT_UP_P)를 수신하는 논리 PAD(103)의 PAD 어드레스(116)가 서브세트 종료 PAD 어드레스와 같으면, 논리 PAD(103)는 그의 PAD 어드레스를 논리 PAD(103)들의 어레이의 명시된 PAD 어드레스(116)로 설정한다. 부분적 시프트 업 커맨드를 수신하는 논리 PAD(103)의 PAD 어드레스(116)가 명시된 PAD 어드레스보다 크거나 같지만 결정된 서브세트 종료 PAD 어드레스보다 작으면, 논리 PAD(103)는 그의 PAD 어드레스를 하나(1)씩 증분한다. 도 4b의 상태 머신(400)에서 도시된 바와 같이, 이것은 단일의 사이클 커맨드이기 때문에 CMD_SHIFT_UP_P는 예시적인 PAD(104)를 유휴 상태(S_IDLE)(430)에 머물게 한다.
도 12는 부분적 시프트 업 커맨드(CMD_SHIFT_UP_P)의 타이밍도를 도시한다. 첫 클럭 사이클(1200)에서, 어드레스 변환기(102)(도 1a 내지 도 1c)는 부분적 시프트 업 커맨드(CMD_SHIFT_UP_P)를 커맨드 라인(406)(at_pad_cmd)에 실어 전달하고, 어드레스 변환기(102)는 어드레스(75d)를 어드레스 라인(408)(at_pad_addr)에 실어 전달하며, 어드레스 변환기(102)는 23f라는 길이에 기초하여 서브세트 종료 어드레스(75d + 23f - 1 = 99B)를 서브세트 종료 어드레스 라인(509)(at_pad_addr_e)에 실어 전달한다.
도 4b를 다시 참조하면, 부분적 시프트 다운 커맨드(CMD_SHIFT_DN_P)는 논리 PAD(103)들의 서브세트의 PAD 어드레스(예를 들면, 도 1c 및 도 1d의 PAD 어드레스)를 시프트 다운하는데 사용된다. 부분적 시프트 다운을 실행하기 위하여, 예시적인 프로세서(108)는 시프트 다운이 시작하게 될 호스트 물리 어드레스 및 시프트 다운될 어드레스 가능한 메모리 장소(120)의 숫자에 대응하는 길이를 명시한다. 예시적인 어드레스 변환기(102)는 명시된 호스트 물리 어드레스를 PAD 어드레스로 변환하고 변환된 PAD 어드레스에 길이를 가산하고 하나(1)를 감산(예를 들면, ('길이' + '변환된 PAD 어드레스') - )함으로써 서브세트 종료 PAD 어드레스를 결정한다. 그런 다음 예시적인 어드레스 변환기(102)는 부분적 시프트 다운 커맨드(CMD_SHIFT_DN_P), 변환된 PAD 어드레스 및 결정된 서브세트 종료 PAD 어드레스를 모든 논리 PAD(103)로 전송한다.
논리 PAD(103)가 부분적 시프트 다운 커맨드(CMD_SHIFT_DN_P)를 수신할 때, 논리 PAD(103)의 PAD 어드레스가 명시된 PAD 어드레스보다 작거나 서브세트 종료 PAD 어드레스보다 크면, 논리 PAD(103)는 아무런 동작도 하지 않는다. 부분적 시프트 다운 커맨드(CMD_SHIFT_DNP_P)를 수신하는 논리 PAD(103)의 PAD 어드레스(116)가 명시된 PAD 어드레스와 같으면, 논리 PAD(103)는 그의 PAD 어드레스를 서브세트 종료 PAD 어드레스로 설정한다. 부분적 시프트 업 커맨드를 수신하는 논리 PAD(103)의 PAD 어드레스(116)가 명시된 PAD 어드레스보다 크지만 결정된 서브세트 종료 PAD 어드레스보다 작거나 같으면, 논리 PAD(103)는 그의 PAD 어드레스를 하나(1)씩 감분한다. 도 4b의 상태 머신(400)에서 도시된 바와 같이, 이것은 단일의 사이클 커맨드이기 때문에 CMD_SHIFT_DN_P는 예시적인 PAD(104)를 유휴 상태(S_IDLE)(430)에 머물게 한다.
도 13은 부분적 시프트 다운 커맨드(CMD_SHIFT_DN_P)의 타이밍도를 도시한다. 첫 클럭 사이클(1300)에서, 어드레스 변환기(102)(도 1a 내지 도 1c)는 부분적 시프트 다운 커맨드(CMD_SHIFT_DN_P)를 커맨드 라인(406)(at_pad_cmd)에 실어 전달하고, 어드레스 변환기(102)는 2b4라는 길이에 기초하여 어드레스(4cf + 2b4 -1 = 782)를 어드레스 라인(408)(at_pad_addr)에 실어 전달하며, 어드레스 변환기(102)는 서브세트 종료 어드레스(2b4)를 서브세트 종료 어드레스 라인(509)(at_pad_addr_e)에 실어 전달한다.
도 4b에서 명시된 커맨드 이외에, 예시적인 메모리 컨트롤러(100)는 PAD 어드레스를 사용하여 호스트 물리 어드레스와 하드웨어 메모리 어드레스 간의 매핑을 변경하는 다른 커맨드를 수신하고 처리하도록 프로그래밍될 수 있다.
예시된 예에서, 본 출원에서 기술된 각각의 커맨드는 프로세서(108)에 의해 전송되고 PAD(104)에 의해 수신되어 PAD(104)가 그러한 메모리 동작을 수행하도록 프로그래밍함으로써 물리 어드레스를 PAD(104)에 매핑하는 작업을 덜어주고 메모리 동작의 어드레스의 수행 성능을 증가시켜 준다. 예를 들면, PAD(104)는 예시적인 메모리 디바이스(110)들의 어레이에 액세스하기 위한 어드레스 매핑을 재정리하여 메모리 디바이스의 어드레스 가능한 메모리 장소들 사이에서 데이터 이동 및 카피를 감소시킬 수 있다. 일부 예에서, 프로세서(108) 및 메모리 컨트롤러(100)는 본 출원에서 기술된 커맨드 이외의 다른 커맨드가 프로세서(108)에 의해 전송되고 메모리 컨트롤러(100)에 의해 수신되도록 하여 PAD(104)로 하여금 프로세서(108)에 의해 명시된 호스트 물리 어드레스(114)와 예시적인 메모리 디바이스(110)의 하드웨어 메모리 어드레스(118) 간의 매핑을 변경하도록 구현될 수 있다.
도 1b 및 도 1c의 예시된 예에서, 어드레스 변환기(102), PAD(104) 및 PAD 어드레스 변경기(112)는 메모리 컨트롤러(100) 내에 배치된다. 도 1d에 도시된 바와 같은 예에서, PAD(104)는 PAD 어드레스(116)를 하드웨어 메모리 어드레스(118) 대신에 이차의 물리 어드레스(117)(117-0 내지 117-n)로 디코딩한다. 그러한 예에서, 어드레스 변환기(102), PAD(104) 및 메모리 컨트롤러(122)는 메모리 컨트롤러(122)의 외부에 배치된다. 도 1d의 예시된 예에서, PAD(104)는 디코딩된 이차의 물리 어드레스(117)를 메모리 컨트롤러(122)로 전송하며, 메모리 컨트롤러는 이차의 물리 어드레스(117)를 종래 기술을 이용하여 메모리(124)의 하드웨어 메모리 어드레스(118)로 디코딩한다. 도 4 내지 도 25와 관련하여 본 출원에 기술되는 예시적인 커맨드 및 방법은 도 1d의 예시적인 구성을 이용하여 구현될 수 있다. 그러한 예에서, PAD(104)는 하드웨어 메모리 어드레스(118) 대신 도 1d의 이차 물리 어드레스(117)를 결정한다.
메모리 컨트롤러(100)를 구현하는 예시적인 방식이 도 1a, 도 1b, 도 1c 및 도 1d에서 예시되었지만, 도 1a, 도 1b, 도 1c 및/또는 도 1d에 도시된 요소, 프로세스 및/또는 디바이스 중 한 가지 이상은 임의의 다른 방식으로 조합되고, 분리되고, 재배열되고, 생략되고, 삭제되고, 그리고/또는 실시될 수 있다. 또한, 예시적인 어드레스 변환기(102), 예시적인 PAD(104), 예시적인 PAD 어드레스 변경기(112), 예시적인 메모리 디바이스(110) 및/또는, 더 일반적으로는, 도 1a, 도 1b, 도 1c 및/또는 도 1d의 예시적인 메모리 컨트롤러(100)는 하드웨어, 소프트웨어, 펌웨어 및/또는 하드웨어, 소프트웨어 및/또는 펌웨어의 임의의 조합으로 구현될 수 있다. 그러므로, 예를 들어, 예시적인 어드레스 변환기(102), 예시적인 PAD(104), 예시적인 PAD 어드레스 변경기(112), 예시적인 메모리 디바이스(110) 및/또는, 더 일반적으로는, 도 1a, 도 1b, 도 1c 및/또는 도 1d의 예시적인 메모리 컨트롤러(100)는 하나 이상의 회로(들), 프로그램 가능한 프로세서(들), 주문형 집적회로(application specific integrated circuit(s), ASIC(s)), 프로그램 가능한 로직 디바이스(들)(programmable logic device(s), PLD(s)), 마이크로프로세서(들), 하드웨어 프로세서(들), 및/또는 필드 프로그램 가능 로직 디바이스(들)(field programmable logic device(s), FPLD(s)) 등에 의해 구현될 수도 있다. 본 특허의 시스템 또는 장치 청구항 중 임의의 청구항이 순전히 소프트웨어 및/또는 펌웨어 구현예를 망라하고 있을 때, 어드레스 변환기(102), 예시적인 PAD(104), 예시적인 PAD 어드레스 변경기(112), 예시적인 메모리 디바이스(110) 및/또는 더 일반적으로는 도 1a, 도 1b, 도 1c 및/또는 도 1d의 예시적인 메모리 컨트롤러(100)는 소프트웨어 및/또는 펌웨어를 저장하는 메모리, DVD, CD, 블루레이 등과 같은 유형의 컴퓨터 판독가능한 저장 매체를 포함하는 것으로 분명하게 정의된다. 또한, 어드레스 변환기(102), 예시적인 PAD(104), 어드레스 변환기(102), 예시적인 PAD(104), 예시적인 PAD 어드레스 변경기(112), 예시적인 메모리 디바이스(110) 및/또는 더 일반적으로는 도 1a, 도 1b, 도 1c 및/또는 도 1d의 예시적인 메모리 컨트롤러(100)는 임의의 또는 모두의 예시된 요소, 프로세서 및 디바이스 중 하나보다 많이 포함할 수 있다.
도 1a, 도 1b, 도 1c, 도 1d, 도 2, 도 3 및 도 4의 예시적인 어드레스 변환기(102), 예시적인 PAD(104) 및 예시적인 PAD 어드레스 변경기(112)를 실시하기 위한 예시적인 머신 판독가능한 명령어를 나타내는 플로우차트가 도 14 내지 도 25에 도시된다. 이들 예에서, 머신 판독가능한 명령어는 프로세서에 의해 실행하기 위한 프로그램을 포함한다. 프로그램은 CD-ROM, 플로피 디스크, 하드 드라이브, 디지털 다기능 디스크(a digital versatile disk, DVD), 블루-레이 디스크, 또는 프로세서와 연관된 메모리와 같은 유형의 컴퓨터 판독가능한 매체에 저장된 소프트웨어로 구현될 수 있지만, 전체 프로그램 및/또는 그 일부는 이와 달리 프로세서와 다른 디바이스에 의해 실행될 수 있으며 그리고/또는 펌웨어 또는 전용의 하드웨어로 구현될 수 있다. 또한, 예시적인 프로그램이 도 14 내지 도 25에 예시된 플로우차트를 참조하여 기술되지만, 예시적인 어드레스 변환기(102), 예시적인 PAD(104) 및 예시적인 PAD 어드레스 변경기(112)를 구현하는 다른 많은 방법이 대안으로 사용될 수 있다. 예를 들면, 블록의 실행 순서가 변경될 수 있고, 그리고/또는 기술된 블록의 일부가 변경되거나, 제거되거나, 또는 조합될 수 있다.
앞에서 언급한 바와 같이, 도 14 내지 도 25의 예시적인 프로세스는 임의의 지속 기간 동안(예를 들면, 연장된 기간 동안, 영구히, 순간, 일시 버퍼링하는 동안, 및/또는 정보를 캐싱하는 동안) 정보가 저장되는 하드 디스크 드라이브, 플래시 메모리, 판독 전용 메모리(a read-only memory, ROM), 컴팩트 디스크(a compact disk, CD), 디지털 다기능 디스크(DVD), 캐시, 랜덤 액세스 메모리(a random-access memory, RAM) 및/또는 임의의 다른 저장 매체와 같은 유형의 컴퓨터 판독가능한 매체에 저장되는 코딩된 명령어(예를 들면, 컴퓨터 판독가능한 명령어)를 사용하여 구현될 수 있다. 본 출원에서 사용된 바와 같은, 유형의 컴퓨터 판독가능한 매체라는 용어는 임의의 형태의 컴퓨터 판독가능한 저장소를 포함하고 전파 신호를 제외하는 것으로 명확히 정의된다. 부가적으로 또는 대안으로, 도 14 내지 도 25의 예시적인 프로세스는 임의의 지속 기간 동안(예를 들면, 연장된 기간 동안, 영구히, 순간, 일시 버퍼링하는 동안, 및/또는 정보를 캐싱하는 동안) 정보가 저장되는 하드 디스크 드라이브, 플래시 메모리, 판독 전용 메모리, 컴팩트 디스크, 디지털 다기능 디스크, 캐시, 랜덤 액세스 메모리, 및/또는 임의의 다른 저장 매체와 같은 비일시적 컴퓨터 판독가능한 매체에 저장되는 코딩된 명령어(예를 들면, 컴퓨터 판독가능한 명령어)를 사용하여 구현될 수 있다. 본 출원에서 사용된 바와 같은, 비일시적 컴퓨터 판독가능한 매체라는 용어는 임의의 형태의 컴퓨터 판독가능한 매체를 포함하고 전파 신호를 제외하는 것으로 명확히 정의된다. 본 출원에서 사용된 바와 같이, "적어도"라는 구문이 청구항의 프리앰블에서 전이구로서 사용될 때, 이 용어는 "포함하는"이라는 용어가 확장 가능하다는 것과 동일한 방식으로 확장 가능하다. 그래서, 청구항의 프리앰블에서 전이구로서 "적어도"를 사용하는 청구항은 청구항에서 명확히 언급된 요소 이외의 요소를 포함할 수 있다.
도 14는 도 1a 내지 도 1d 및 도 2와 도 3의 PAD(104)에서 수신되는 커맨드를 수행하는 예시적인 방법의 흐름도를 도시한다. 먼저, PAD(104)는 리셋을 수신하였는지 결정한다(블록(1402)). 예를 들면, 프로세서(108)는 메모리를 초기화하는 부팅 프로세스 동안 리셋을 발행할 수 있다. PAD(104)가 리셋을 수신하였으면(블록(1402)), PAD(104)는 예시적인 논리 PAD(103)(도 1c 및 도 1d)의 PAD 어드레스(116)(도 1c 및 도 1d)를 도 1c의 하드웨어 메모리 어드레스(118)(또는 도 1d의 이차 물리 어드레스(117))로 리셋함으로써 리셋을 실행한다(블록(1404)).
그런 다음 예시적인 PAD(104)는 커맨드를 수신하였는지 결정한다(블록(1406)). 예를 들면, PAD(104)는 프로세서(108)로부터 어드레스 변환기(102)를 통해 커맨드, 예를 들면, 무동작, 기록, 판독, 시프트 업, 시프트 다운, 리맵핑 활성화, 리맵핑, 삽입, 삭제, 부분적 시프트 업, 부분적 시프트 다운)를 수신하였는지 결정한다. 예시적인 PAD(104)가 커맨드를 수신할 때(블록(1406)), PAD(104)는 도 4 내지 도 13과 관련하여 앞에서 기술한 바와 같이 커맨드를 실행한다(블록(1408)). 블록(1408)에서 상이한 커맨드를 실행하는 예시적인 방법은 도 15 내지 도 24와 관련하여 아래에서 기술된다.
블록(1406)에서 커맨드가 수신되지 않으면, 또는 블록(1408)에서 수신된 커맨드를 실행한 후, PAD(104)는 커맨드를 모니터링하기를 계속할지 결정한다(블록(1410). PAD(104)가 커맨드의 모니터링을 계속할 것을 결정하면(블록(1410)), 컨트롤은 블록(1406)으로 되돌아간다. 그렇지 않으면, 도 14의 예시적인 방법은 종료한다.
도 15는 도 1a 내지 도 1d 및 도 2 내지 도4의 예시적인 어드레스 변환기(102) 및 예시적인 PAD(104)를 사용하여 기록 커맨드(CMD_WR)를 실행하는 예시적인 방법을 나타내는 플로우차트이다. 도 15의 예시적인 방법은 도 14의 블록(1408)을 실시하여 기록 커맨드를 실행하는데 사용될 수 있다. 도 15는 예시적인 PAD(104)가 기록 커맨드를 디코딩할 때 시작한다(블록(1502)). 예시적인 어드레스 변환기(102)는 기록 커맨드에서 명시된 호스트 물리 어드레스를 PAD 어드레스로 변환한다(블록(1504)). 예를 들면, 어드레스 변환기(102)는 도 1c 및 도 1d의 호스트 물리 어드레스(114)를 도 1c 및 도 1d의 PAD 어드레스(116)로 변환할 수 있다. 변환된 PAD 어드레스(116)에 대응하는 예시적인 논리 PAD(103)(도 1c 및 도 1d)는 PAD 어드레스(116)를 하드웨어 메모리 어드레스(118)로 디코딩한다(블록(1506)). 예를 들면, 논리 PAD(103)는 어드레스 변환기(102)로부터 수신된 PAD 어드레스(116)를 어드레스 가능한 메모리 장소(120)(도 1c)의 대응하는 하드웨어 메모리 어드레스(118)(도 1c)로 디코딩할 수 있다. 대안으로, 논리 PAD(103)는 PAD 어드레스(116)를 도 1d의 이차 물리 어드레스(117)로 디코딩한다. 예시적인 PAD(104)는 수신된 기록 커맨드에 명시된 값을 어드레스 가능한 메모리 장소(120)에 기록한다(블록(1508)). 예시적인 PAD(104)는 확인 통신 신호를 프로세서(108)에 반환한다(블록(1510)). 이후 도 16의 예시적인 방법은 도 14의 예시적인 방법과 같은 호출 프로세스 또는 기능으로 되돌아 가며, 도 15의 예시적인 방법은 종료한다.
도 16은 도 1a 내지 도 1d 및 도 2 내지 도4의 예시적인 어드레스 변환기(102) 및 예시적인 PAD(104)를 사용하여 판독 커맨드(CMD_RD)를 실행하는 예시적인 방법을 나타내는 플로우차트이다. 도 16의 예시적인 방법은 도 14의 블록(1408)을 실시하여 판독 커맨드를 실행하는데 사용될 수 있다. 도 16은 예시적인 PAD(104)가 판독 커맨드를 디코딩할 때 시작한다(블록(1602)). 예시적인 어드레스 변환기(102)는 판독 커맨드에서 명시된 호스트 물리 어드레스를 PAD 어드레스로 변환한다(블록(1604)). 예를 들면, 어드레스 변환기(102)는 도 1c 및 도 1d의 호스트 물리 어드레스(114)를 도 1c 및 도 1d의 PAD 어드레스(116)로 변환할 수 있다. 변환된 PAD 어드레스(116)에 대응하는 예시적인 논리 PAD(103)(도 1c 및 도 1d)는 PAD 어드레스(116)를 하드웨어 메모리 어드레스(118)로 디코딩한다(블록(1606)). 예를 들면, 논리 PAD(103)는 어드레스 변환기(102)로부터 수신된 PAD 어드레스(116)를 어드레스 가능한 메모리 장소(120)(도 1c)의 대응하는 하드웨어 메모리 어드레스(118)(도 1c)로 디코딩할 수 있다. 대안으로, 논리 PAD(103)는 PAD 어드레스(116)를 도 1d의 이차 물리 어드레스(117)로 디코딩한다. 예시적인 PAD(104)는 어드레스 가능한 메모리 장소에 대응하는 어드레스 가능한 메모리 장소(120)에 저장된 값을 판독하고 판독된 값을 반환한다(블록(1608)). 예시적인 PAD(104)는 확인 통신 신호를 프로세서(108)에 반환한다(블록(1610)). 이후 도 16의 예시적인 방법은 도 14의 예시적인 방법과 같은 호출 프로세스 또는 기능으로 되돌아 가며, 도 16의 예시적인 방법은 종료한다.
도 17은 도 1a 내지 도 1d 및 도 3 내지 도 5의 예시적인 어드레스 변환기(102) 및 예시적인 PAD(104)를 사용하여 시프트 업 커맨드(CMD_SHIFT_UP)를 실행하는 예시적인 방법을 나타내는 플로우차트이다. 도 17의 예시적인 방법은 도 14의 블록(1408)을 실시하여 시프트 업 커맨드를 실행하는데 사용될 수 있다. 도 17은 예시적인 PAD(104)가 시프트 업 커맨드를 디코딩할 때 시작한다(블록(1702)). PAD 어드레스 변경기(112)는 논리 PAD(103)의 PAD 어드레스(116)를 증분한다(블록(1704)). 그런 다음 도 17의 예시적인 방법은 도 14의 예시적인 방법과 같은 호출 프로세스 또는 기능으로 되돌아 가며, 도 17의 예시적인 방법은 종료한다.
도 18은 도 1a 내지 도 1d 및 도 3 내지 도5의 예시적인 어드레스 변환기(102) 및 예시적인 PAD(104)를 사용하여 시프트 다운 커맨드(CMD_SHIFT_DN)를 실행하는 예시적인 방법을 나타내는 플로우차트이다. 도 18의 예시적인 방법은 도 14의 블록(1408)을 실시하여 시프트 업 커맨드를 실행하는데 사용될 수 있다. 도 18은 예시적인 PAD(104)가 시프트 다운 커맨드를 디코딩할 때 시작한다(블록(1802)). PAD 어드레스 변경기(112)는 논리 PAD(103)의 PAD 어드레스(116)를 감분한다(블록(1804)). 그런 다음 도 18의 예시적인 방법은 도 14의 예시적인 방법과 같은 호출 프로세스 또는 기능으로 되돌아 가며, 도 18의 예시적인 방법은 종료한다.
도 19는 도 1a 내지 도 1d 및 도 2 내지 도 4의 예시적인 어드레스 변환기(102) 및 예시적인 PAD(104)를 사용하여 리맵핑 활성화 커맨드(CMD_REMAP_ACTIVATE)를 실행하는 예시적인 방법을 나타내는 플로우차트이다. 도 19의 예시적인 방법은 도 14의 블록(1408)을 실시하여 리맵핑 활성화 커맨드를 실행하는데 사용될 수 있다. 도 19는 예시적인 PAD(104)가 리맵핑 활성화 커맨드를 디코딩할 때 시작한다(블록(1902)). 예시적인 어드레스 변환기(102)는 리맵핑 활성화 커맨드에서 명시된 호스트 물리 어드레스를 PAD 어드레스로 변환한다(블록(1904)). 예를 들면, 어드레스 변환기(102)는 도 1c 및 도 1d의 호스트 물리 어드레스(114)를 도 1c 및 도 1d의 PAD 어드레스(116)로 변환할 수 있다. PAD 어드레스 변경자(112)는 논리 PAD(103)의 리맵핑 준비 플래그를 설정한다(블록(1906)). 이후 도 19의 예시적인 방법은 도 14의 예시적인 방법과 같은 호출 프로세스 또는 기능으로 되돌아 가며, 도 19의 예시적인 방법은 종료한다.
도 20은 도 1a 내지 도 1d 및 도 3 내지 도 5의 예시적인 어드레스 변환기(102) 및 예시적인 PAD(104)를 사용하여 리맵핑 커맨드(CMD_REMAP)를 실행하는 예시적인 방법을 나타내는 플로우차트이다. 도 20의 예시적인 방법은 도 14의 블록(1408)을 실시하여 리맵핑 커맨드를 실행하는데 사용될 수 있다. 도 20은 예시적인 PAD(104)가 리맵핑 커맨드를 디코딩할 때 시작한다(블록(2002)). 예시적인 어드레스 변환기(102)는 리맵핑 커맨드에서 명시된 호스트 물리 어드레스를 PAD 어드레스로 변환한다(블록(2004)). 예를 들면, 어드레스 변환기(102)는 도 1c 및 도 1d의 호스트 물리 어드레스(114)를 도 1c 및 도 1d의 PAD 어드레스(116)로 변환할 수 있다. 예시적인 어드레스 변환기(102)는 리맵핑 커맨드에서 명시된 제 2 호스트 물리 어드레스를 PAD 어드레스로 변환한다(블록(2006)). 예시적인 PAD 어드레스 변경기(112)는 제 1의 디코딩된 논리 PAD 어드레스에 대응하는 논리 PAD(103)의 리맵핑 준비 플래그를 클리어한다(블록(2008)). PAD 어드레스 변경기(112)는 예시적인 논리 PAD(103)의 PAD 어드레스를 제 2의 변환된 PAD 어드레스로 설정한다(블록(2010)). 예시적인 PAD(104)는 확인 통신 신호를 프로세서(108)에 반환한다(블록(2012). 이후 도 20의 예시적인 방법은 도 14의 예시적인 방법과 같은 호출 프로세스 또는 기능으로 되돌아 가며, 도 20의 예시적인 방법은 종료한다.
도 21은 도 1a 내지 도 1d 및 도 2 내지 도 4의 예시적인 어드레스 변환기(102) 및 예시적인 PAD(104)를 사용하여 삽입 커맨드(CMD_INSERT)를 실행하는 예시적인 방법을 나타내는 플로우차트이다. 도 21의 예시적인 방법은 도 14의 블록(1408)을 실시하여 삽입 커맨드를 실행하는데 사용될 수 있다. 도 21은 예시적인 PAD(104)가 삽입 커맨드를 디코딩할 때 시작한다(블록(2102)). 예시적인 어드레스 변환기(102)는 삽입 커맨드에서 명시된 호스트 물리 어드레스를 PAD 어드레스로 변환한다(블록(2104)). 예를 들면, 어드레스 변환기(102)는 도 1c 및 도 1d의 호스트 물리 어드레스(114)를 도 1c 및 도 1d의 PAD 어드레스(116)로 변환할 수 있다
PAD 어드레스 변경기(112)는 어느 논리 PAD(103)(도 1c 및 도 1d)가 논리 PAD(103)들의 어레이의 최대 PAD 어드레스(116)와 동일한 PAD 어드레스(116)를 가지고 있는지 결정한다(블록(2106)). PAD 어드레스 변경기(112)는 최대 PAD 어드레스를 가진 논리 PAD(103)의 PAD 어드레스(116)를 변환된 PAD 어드레스로 설정한다(블록(2108)). 그런 다음 논리 PAD(103)는 그의 PAD 어드레스(116)를 하드웨어 메모리 어드레스로 디코딩한다(블록(2110)). 예를 들면, 논리 PAD(103)는 PAD 어드레스(116)를 대응하는 어드레스 가능한 메모리 장소(120)(도 1c 및 도 1d)로 디코딩할 수 있다. PAD(104)는 수신된 삽입 커맨드에서 명시된 값을 어드레스 가능한 메모리 장소(120)에 기록한다(블록(2112)). PAD(104)는 확인 통신 신호를 프로세서(108)에 반환한다(블록(2114)).
논리 PAD(103)의 PAD 어드레스(116)가 논리 PAD(103)들의 어레이의 최대 PAD 어드레스를 가지고 있지 않으면, PAD 어드레스 변경기(112)는 어느 PAD 어드레스(116)가 변환된 PAD 어드레스보다 크거나 같은지 결정한다(블록(2116)). 변환된 PAD 어드레스보다 크거나 같은 PAD 어드레스(116)를 가진 논리 PAD(103)에 대해(블록(2116)), PAD 어드레스 변경기(112)는 PAD 어드레스(116)를 하나(1)씩 증분한다(블록(2118)). 논리 PAD(103)의 PAD 어드레스(116)가 변환된 PAD 어드레스보다 크지도 같지도 않으면(블록(2116)), 또는 PAD 어드레스 변경기(112)가 PAD 어드레스(116)를 하나(1)씩 증분한 후(블록(2118)), 또는 PAD(104)가 확인 통신 신호를 프로세서(108)에 반환한 후(블록(2114)), 도 21의 예시적인 방법은 도 14의 예시적인 방법과 같은 호출 프로세스 또는 기능으로 되돌아 가며, 도 21의 예시적인 방법은 종료한다.
도 22는 도 1a 내지 도 1d 및 도 2 내지 도 4의 예시적인 어드레스 변환기(102) 및 예시적인 PAD(104)를 사용하여 삭제 커맨드(CMD_DELETE)를 실행하는 예시적인 방법을 나타내는 플로우차트이다. 도 22의 예시적인 방법은 도 14의 블록(1408)을 실시하여 삭제 커맨드를 실행하는데 사용될 수 있다. 도 22는 예시적인 PAD(104)가 삭제 커맨드를 디코딩할 때 시작한다(블록(2202)). 예시적인 어드레스 변환기(102)는 삭제 커맨드에서 명시된 호스트 물리 어드레스를 PAD 어드레스로 변환한다(블록(2204)). 예를 들면, 어드레스 변환기(102)는 도 1c 및 도 1d의 호스트 물리 어드레스(114)를 도 1c 및 도 1d의 PAD 어드레스(116)로 변환할 수 있다.
PAD 어드레스 변경기(112)는 어느 PAD 어드레스(116)가 변환된 PAD 어드레스와 같은지 결정한다(블록(2206)). 논리 PAD(103)의 PAD 어드레스(116)가 변환된 PAD 어드레스와 같으면(블록(2206)), PAD 어드레스 변경기(112)는 논리 PAD(103)의 PAD 어드레스(116)를 논리 PAD(103)들의 어레이의 최대 PAD 어드레스로 설정한다(블록(2208)). 논리 PAD(103)의 PAD 어드레스(116)가 변환된 PAD 어드레스와 같지 않으면(블록(2206)), PAD 어드레스 변경기(112)는 논리 PAD(103)의 PAD 어드레스(116)가 변환된 PAD 어드레스보다 큰지 결정한다(블록(2210)). 논리 PAD(103)의 PAD 어드레스(116)가 변환된 PAD 어드레스보다 크면(블록(2210)), PAD 어드레스 변경기(112)는 논리 PAD(103)의 PAD 어드레스(116)를 하나(1)씩 감분한다(블록(2212)). PAD 어드레스 변경기(112)가 논리 PAD(103)의 PAD 어드레스(116)가 변환된 PAD 어드레스보다 크지 않다고 결정하면(블록(2210)), 또는 논리 PAD(103)의 PAD 어드레스(116)를 하나(1)씩 감분한 후(블록(2212)), 또는 논리 PAD(103)의 PAD 어드레스(116)를 논리 PAD(103)들의 어레이의 최대 PAD 어드레스로 설정한 후(블록(2208)), 도 22의 예시적인 방법은 도 14의 예시적인 방법과 같은 호출 프로세스 또는 기능으로 되돌아 가며, 도 22의 예시적인 방법은 종료한다.
도 23은 도 1a 내지 도 1d 및 도 2 내지 도 4의 예시적인 어드레스 변환기(102) 및 예시적인 PAD(104)를 사용하여 부분적 시프트 업 커맨드(CMD_SHIFT_UP_P)를 실행하는 예시적인 방법을 나타내는 플로우차트이다. 도 23의 예시적인 방법은 도 14의 블록(1408)을 실시하여 부분적 시프트 업 커맨드를 실행하는데 사용될 수 있다. 도 23은 예시적인 PAD(104)가 부분적 시프트 업 커맨드를 디코딩할 때 시작한다(블록(2302)). 예시적인 어드레스 변환기(102)는 부분적 시프트 업 커맨드에서 명시된 호스트 물리 어드레스를 PAD 어드레스로 변환한다(블록(2304)). 예를 들면, 어드레스 변환기(102)는 도 1c 및 도 1d의 호스트 물리 어드레스(114)를 도 1c 및 도 1d의 PAD 어드레스(116)로 변환할 수 있다. 예시적인 어드레스 변환기(102)는 부분적 시프트 업 커맨드에서 명시된 길이를 변환된 PAD 어드레스에 가산하고 하나(1)를 감산함으로써 종료 PAD 어드레스를 결정한다(블록(2306)). 부분적 시프트 업 커맨드에서 명시된 길이는 PAD 어드레스가 시프트 업되는 논리 PAD(103)의 숫자를 나타낸다.
PAD 어드레스 변경기(112)는 어느 논리 PAD(103)(도 1c 및 도 1c)가 결정된 종료 PAD 어드레스와 같은 PAD 어드레스(116)를 가지고 있는지 결정한다(블록(2308)). PAD 어드레스 변경기(112)는 결정된 종료 PAD 어드레스를 가진 논리 PAD(103)의 PAD 어드레스(116)를 변환된 PAD 어드레스로 설정한다(블록(2310)).
논리 PAD(103)의 PAD 어드레스(116)가 결정된 종료 PAD 어드레스와 같지 않으면, PAD 어드레스 변경기(112)는 어느 PAD 어드레스(116)가 변환된 PAD 어드레스와 크거나 같은지 그리고 결정된 종료 PAD 어드레스보다 작은지 결정한다(블록(2312)). 변환된 PAD 어드레스보다 크거나 같으며 그리고 결정된 종료 PAD 어드레스보다 작은 PAD 어드레스(116)를 가진 논리 PAD(103)에 대해(블록(2312)), PAD 어드레스 변경기(112)는 PAD 어드레스(116)를 하나(1)씩 증분한다(블록(2314)). 논리 PAD(103)의 PAD 어드레스(116)가 변환된 PAD 어드레스보다 크지도 같지도 않으며 결정된 종료 PAD 어드레스보다 작으면(블록(2312)), 또는 PAD 어드레스 변경기(112)가 PAD 어드레스(116)를 하나(1)씩 감분한 후(블록(2314)), 또는 PAD 어드레스 변경기(112)가 논리 PAD(103)의 PAD 어드레스(116)를 변환된 PAD 어드레스로 설정한 후(블록(2310)), 도 23의 예시적인 방법은 도 14의 예시적인 방법과 같은 호출 프로세스 또는 기능으로 되돌아 가며, 도 23의 예시적인 방법은 종료한다.
도 24는 도 1a 내지 도 1d 및 도 2 내지 도 4의 예시적인 어드레스 변환기(102) 및 예시적인 PAD(104)를 사용하여 부분적 시프트 다운 커맨드(CMD_SHIFT_DN_P)를 실행하는 예시적인 방법을 나타내는 플로우차트이다. 도 24의 예시적인 방법은 도 14의 블록(1408)을 실시하여 부분적 시프트 다운 커맨드를 실행하는데 사용될 수 있다. 도 24는 예시적인 PAD(104)가 부분적 시프트 다운 커맨드를 디코딩할 때 시작한다(블록(2402)). 예시적인 어드레스 변환기(102)는 부분적 시프트 다운 커맨드에서 명시된 호스트 물리 어드레스를 PAD 어드레스로 변환한다(블록(2404)). 예를 들면, 어드레스 변환기(102)는 도 1c 및 도 1d의 호스트 물리 어드레스(114)를 도 1c 및 도 1d의 PAD 어드레스(116)로 변환할 수 있다. 예시적인 어드레스 변환기(102)는 부분적 시프트 다운 커맨드에서 명시된 길이를 변환된 PAD 어드레스에 가산하고 하나(1)를 감산함으로써 서브세트 종료 PAD 어드레스를 결정한다(블록(2406)). 부분적 시프트 다운 커맨드에서 명시된 길이는 PAD 어드레스가 시프트 다운되는 논리 PAD(103)의 숫자를 나타낸다.
PAD 어드레스 변경기(112)는 어느 논리 PAD(103)(도 1c 및 도 1c)가 변환된 PAD 어드레스와 같은 PAD 어드레스(116)를 가지고 있는지 결정한다(블록(2408)). PAD 어드레스 변경기(112)는 변환된 PAD 어드레스를 가진 논리 PAD(103)의 PAD 어드레스(116)를 결정된 서브세트 종료 PAD 어드레스로 설정한다(블록(2410)).
논리 PAD(103)의 PAD 어드레스(116)가 변환된 PAD 어드레스와 같지 않으면, PAD 어드레스 변경기(112)는 어느 PAD 어드레스(116)가 변환된 PAD 어드레스와 큰지 그리고 결정된 서브세트 종료 PAD 어드레스보다 작거나 같은지 결정한다(블록(2412)). 변환된 PAD 어드레스보다 크고 결정된 서브세트 종료 PAD 어드레스보다 작거나 같은 PAD 어드레스(116)를 가진 논리 PAD(103)에 대해(블록(2412)), PAD 어드레스 변경기(112)는 PAD 어드레스(116)를 하나(1)씩 감분한다(블록(2414)). 논리 PAD(103)의 PAD 어드레스(116)가 변환된 PAD 어드레스보다 크지 않으며 결정된 서브세트 종료 PAD 어드레스보다 작거나 같으면(블록(2412)), 또는 PAD 어드레스 변경기(112)가 PAD 어드레스(116)를 하나(1)씩 감분한 후(블록(2414)), 또는 PAD 어드레스 변경기(112)가 논리 PAD(103)의 PAD 어드레스(116)를 결정된 서브세트 종료 PAD 어드레스로 설정한 후(블록(2410)), 도 24의 예시적인 방법은 도 14의 예시적인 방법과 같은 호출 프로세스 또는 기능으로 되돌아 가며, 도 24의 예시적인 방법은 종료한다.
도 25는 은 도 1a 내지 도 1d 및 도 2 내지 도 3의 PAD(104)에서 수신한 커맨드, 이를 테면, 앞에서 도 4 내지 도 24와 관련하여 기술된 커맨드 및/또는 임의의 다른 커맨드를 실행하는 예시적인 방법을 나타내는 플로우차트이다. 먼저, 어드레스 변환기는 수신된 호스트 물리 어드레스(114)를 PAD 어드레스(116)로 변환한다(블록(2502)). 예를 들면, 어드레스 변환기(102)는 도 1c 및 도 1d의 호스트 물리 어드레스(114)를 논리 PAD(103)에 대응하는 도 1c 및 도 1d의 PAD 어드레스(116)로 변환할 수 있다. 예시적인 논리 PAD(103)는 변환된 PAD 어드레스를 하드웨어 메모리 어드레스로 디코딩한다(블록(2504)). 예를 들면, PAD(104)는 어드레스 변환기(102)로부터 수신된 PAD 어드레스(116)를 어드레스 가능한 메모리 장소(120)의 대응하는 하드웨어 메모리 어드레스(118)(도 1c 및 도 1d)로 디코딩할 수 있다. PAD(104)는 호스트 물리 어드레스(114)를 어드레스 가능한 메모리 장소(120)의 상이한 하드웨어 메모리 어드레스(118)와 연관시킨 것과 연루된 커맨드를 수신한다(블록(2506)). 예시적인 PAD 어드레스 변경기(112)는 논리 PAD(103)의 PAD 어드레스(116)를 변경한다(블록(2508)). 예시된 예에서, PAD 어드레스 변경기(112)는 수신된 커맨드를 실행하는 것과 관련하여 PAD 어드레스(116)를 변경하며, 이로 인하여 PAD 어드레스를 변경(예를 들면, PAD 어드레스를 리맵핑)하게 되면 수신된 커맨드를 실행하기 위해 데이터 이동 및/또는 복사 양이 줄어든다(또는 없애준다). 그러면 도 25의 예시적인 방법은 종료한다.
특정한 예시적인 장치, 방법, 및 제조 물품이 본 출원에서 기술되었지만, 본 특허의 적용 범위는 이것으로 한정되지 않는다. 이와 반대로, 본 특허는 본 특허의 청구범위의 범위 내에 정당하게 속하는 모든 장치, 방법, 및 제조 물품을 망라한다.
Claims (15)
- 제 1 호스트 물리 어드레스(host physical address)를 제 1 중간 어드레스(intermediate address)로 변환하는 어드레스 변환기(address translator)와,
상기 제 1 중간 어드레스를 메모리 내 제 1 어드레스 가능한 메모리 장소(addressable memory location)의 제 1 하드웨어 메모리 어드레스로 디코딩하는 프로그램 가능한 어드레스 디코더 - 상기 프로그램 가능한 어드레스 디코더는 제 1 커맨드(command)를 수신하여 상기 제 1 중간 어드레스와 상기 메모리 내 제 2 어드레스 가능한 메모리 장소의 제 2 하드웨어 메모리 어드레스 간의 매핑을 변경함으로써 상기 제 1 호스트 물리 어드레스를 상기 메모리 내 상기 제 2 어드레스 가능한 메모리 장소와 연관시킴 - 를 포함하는
장치.
- 제 1 항에 있어서,
상기 어드레스 변환기는 제 2 호스트 물리 어드레스를 제 2 중간 어드레스로 변환하고, 상기 프로그램 가능한 어드레스 디코더는 상기 제 2 중간 어드레스를 상기 메모리 내 제 3 어드레스 가능한 메모리 장소의 제 3 하드웨어 메모리 어드레스로 디코딩하고, 상기 프로그램 가능한 어드레스 디코더는 상기 제 2 중간 어드레스와 상기 제 1 하드웨어 메모리 어드레스 간의 매핑을 변경함으로써 상기 제 2 호스트 물리 어드레스를 상기 제 1 어드레스 가능한 메모리 장소와 연관시키는 를 수신하는
장치.
- 제 1 항에 있어서,
상기 제 1 어드레스 가능한 메모리 장소는 어드레스 가능한 메모리 장소들의 어레이를 형성하는 복수의 어드레스 가능한 메모리 장소 중 하나의 장소이고, 상기 어드레스 가능한 메모리 장소들의 어레이의 각각의 어드레스 가능한 메모리 장소는 상이한 하드웨어 메모리 어드레스를 가지며, 상기 복수의 어드레스 가능한 메모리 장소의 각각은 대응하는 중간 어드레스와 연관되고, 상기 프로그램 가능한 어드레스 디코더는 상기 중간 어드레스를 상기 어드레스 가능한 메모리 장소의 대응하는 하드웨어 메모리 어드레스로 디코딩하며,
상기 프로그램 가능한 어드레스 디코더는 상기 중간 어드레스와 상기 하드웨어 메모리 어드레스 간의 매핑을 변경하는 제 2 커맨드를 수신하여 상기 중간 어드레스를 상기 복수의 어드레스 가능한 메모리 장소의 상이한 하나씩과 리맵핑하는
장치.
- 제 3 항에 있어서,
상기 중간 어드레스와 상기 어드레스 가능한 메모리 장소의 상기 하드웨어 메모리 어드레스 간의 매핑을 변경하는 어드레스 변경기(address modifier)를 더 포함하는
장치.
- 제 1 항에 있어서,
상기 어드레스 변환기는 제 2 호스트 물리 어드레스를 제 2 중간 어드레스로 변환하고, 상기 프로그램 가능한 어드레스 디코더는 데이터 값을 상기 제 1 어드레스 가능한 메모리 장소에 기록하는 제 2 커맨드를 수신하며,
상기 장치는, 상기 제 2 중간 어드레스를 상기 제 1 어드레스 가능한 메모리 장소의 상기 제 1 하드웨어 메모리 어드레스에 매핑함으로써 상기 제 2 호스트 물리 어드레스를 상기 제 1 어드레스 가능한 메모리 장소와 연관시키는 어드레스 변경기를 더 포함하는
장치.
- 제 1 호스트 물리 어드레스를 제 1 중간 어드레스로 변환하는 단계와,
상기 제 1 중간 어드레스를 제 1 이차 물리 어드레스(secondary physical address)로 디코딩하는 단계와,
상기 제 1 이차 물리 어드레스를 메모리 내 제 1 어드레스 가능한 메모리 장소의 하드웨어 메모리 어드레스로 디코딩하는 단계와,
상기 제 1 중간 어드레스와 상기 메모리 내 제 2 어드레스 가능한 메모리 장소의 제 2 하드웨어 메모리 어드레스 간의 매핑을 변경함으로써 상기 제 1 호스트 물리 어드레스를 상기 메모리 내 상기 제 2 어드레스 가능한 메모리 장소와 연관시키는 제 1 커맨드를 수신하는 단계를 포함하는
방법.
- 제 6 항에 있어서,
제 2 호스트 물리 어드레스를 제 2 중간 어드레스로 변환하는 단계와,
상기 제 2 중간 어드레스를 상기 메모리 내 제 3 어드레스 가능한 메모리 장소의 제 3 하드웨어 메모리 어드레스로 디코딩하는 제 3 이차 물리 어드레스로 디코딩하는 단계와,
상기 제 1 이차 물리 어드레스에 대한 상기 제 2 중간 어드레스의 매핑을 변경함으로써 상기 제 2 호스트 물리 어드레스를 상기 제 1 이차 물리 어드레스와 연관시키는 제 2 커맨드를 수신하는 단계를 더 포함하는
방법.
- 제 6 항에 있어서,
상기 제 1 어드레스 가능한 메모리 장소는 어드레스 가능한 메모리 장소들의 어레이를 형성하는 복수의 어드레스 가능한 메모리 장소 중 하나의 장소이고, 상기 어드레스 가능한 메모리 장소들의 어레이의 각각의 어드레스 가능한 메모리 장소는 상이한 하드웨어 메모리 어드레스를 가지며,
각각의 상기 하드웨어 메모리 어드레스는 이차 물리 어드레스와 연관되고, 각각의 상기 이차 물리 어드레스는 상기 하드웨어 메모리 어드레스 중 하나의 어드레스로 디코딩되고,
각각의 상기 이차 물리 어드레스는 중간 어드레스와 연관되고, 각각의 상기 중간 어드레스는 상기 이차 물리 어드레스 중 하나의 어드레스로 디코딩되며,
상기 방법은,
상기 중간 어드레스와 상기 복수의 어드레스 가능한 메모리 장소 간의 매핑을 변경하는 제 2 커맨드를 수신하여 상기 중간 어드레스를 상기 이차 물리 어드레스의 상이한 어드레스와 연관시키는 단계를 더 포함하며, 각각의 상기 이차 물리 어드레스는 상기 어드레스 가능한 메모리 장소들의 어레이의 상기 복수의 어드레스 가능한 메모리 장소 중 하나의 장소와 연관되는
방법.
- 제 8 항에 있어서,
상기 중간 어드레스와 연관되는 상기 이차 물리 어드레스의 순서에 대해 상기 중간 어드레스의 순서를 변경하는 단계를 더 포함하는
방법.
- 제 6 항에 있어서,
제 2 호스트 물리 어드레스를 제 2 중간 어드레스로 변환하는 단계와,
데이터 값을 상기 제 1 어드레스 가능한 메모리 장소에 기록하고 상기 제 2 중간 어드레스와 상기 제 1 이차 물리 어드레스 간의 매핑을 변경함으로써 상기 제 2 호스트 물리 어드레스를 상기 제 1 어드레스 가능한 메모리 장소와 연관시키는 제 2 커맨드를 수신하는 단계를 더 포함하는
방법.
- 명령어를 포함하는 유형의 머신 판독가능 저장 매체로서,
상기 명령어는 실행될 때, 머신으로 하여금 적어도,
제 1 호스트 물리 어드레스를 제 1 중간 어드레스로 변환하게 하고,
상기 제 1 중간 어드레스를 메모리 내 제 1 어드레스 가능한 메모리 어드레스로 디코딩하게 하고,
제 1 커맨드에 응답하여 상기 제 1 중간 어드레스와 상기 메모리 내 제 2 어드레스 가능한 메모리 장소의 제 2 하드웨어 메모리 어드레스 간의 매핑을 변경함으로써 상기 제 1 호스트 물리 어드레스를 상기 제 2 어드레스 가능한 메모리 장소와 연관시키게 하는
머신 판독가능 저장 매체.
- 제 11 항에 있어서,
상기 명령어는 실행될 때, 상기 머신으로 하여금,
제 2 호스트 물리 어드레스를 제 2 중간 어드레스로 변환하게 하고,
상기 제 2 중간 어드레스를 상기 메모리 내 제 3 어드레스 가능한 메모리 장소의 제 3 하드웨어 메모리 어드레스로 디코딩하게 하고,
제 2 커맨드를 수신하여 상기 제 1 하드웨어 메모리 어드레스에 대한 상기 제 2 중간 어드레스의 매핑을 변경함으로써 상기 제 2 호스트 물리 어드레스를 상기 제 1 어드레스 가능한 메모리 장소와 연관시키게 하는
머신 판독가능 저장 매체.
- 제 11 항에 있어서,
상기 제 1 어드레스 가능한 메모리 장소는 어드레스 가능한 메모리 장소들의 어레이를 형성하는 복수의 어드레스 가능한 메모리 장소 중 하나의 장소이고, 상기 어드레스 가능한 메모리 장소들의 어레이의 각각의 어드레스 가능한 메모리 장소는 상이한 하드웨어 메모리 어드레스를 가지며,
각각의 상기 복수의 어드레스 가능한 메모리 장소는 대응하는 중간 어드레스와 연관되고, 각각의 상기 중간 어드레스는 상기 어드레스 가능한 메모리 장소 중 하나의 장소로 디코딩되며,
상기 명령어는 실행될 때, 상기 머신으로 하여금 또한, 제 2 커맨드에 응답하여 상기 중간 어드레스와 상기 하드웨어 메모리 어드레스 간의 매핑을 변경시켜서 상기 중간 어드레스를 상기 복수의 어드레스 가능한 메모리 장소의 상이한 하나씩과 리맵핑하게 하는
머신 판독가능 저장 매체.
- 제 13 항에 있어서,
상기 명령어는 실행될 때, 상기 머신으로 하여금 상기 중간 어드레스와 상기 어드레스 가능한 메모리 장소의 상기 하드웨어 메모리 어드레스 간의 상기 매핑을 변경하게 하는
머신 판독가능 저장 매체.
- 제 11 항에 있어서,
상기 명령어는 실행될 때, 상기 머신으로 하여금,
제 2 호스트 물리 어드레스를 제 2 중간 어드레스로 변환하게 하고,
제 2 커맨드에 응답하여 데이터 값을 상기 제 1 어드레스 가능한 메모리 장소에 기록하게 하고,
상기 제 2 중간 어드레스를 상기 제 1 어드레스 가능한 메모리 어드레스의 상기 제 1 하드웨어 메모리 어드레스에 매핑함으로써 상기 제 2 호스트 물리 어드레스를 상기 제 1 어드레스 가능한 메모리 장소와 연관시키게 하는
머신 판독가능 저장 매체.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2013/030545 WO2014142812A1 (en) | 2013-03-12 | 2013-03-12 | Programmable address mapping and memory access operations |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20150132151A true KR20150132151A (ko) | 2015-11-25 |
Family
ID=51537238
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020157024834A KR20150132151A (ko) | 2013-03-12 | 2013-03-12 | 프로그램 가능한 어드레스 매핑 및 메모리 액세스 동작 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20160019161A1 (ko) |
KR (1) | KR20150132151A (ko) |
CN (1) | CN105027213A (ko) |
WO (1) | WO2014142812A1 (ko) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111444115A (zh) * | 2019-01-15 | 2020-07-24 | 爱思开海力士有限公司 | 存储装置及其操作方法 |
US11139020B2 (en) | 2018-12-19 | 2021-10-05 | SK Hynix Inc. | Memory controller and method of operating the same |
US11288202B2 (en) | 2019-02-15 | 2022-03-29 | SK Hynix Inc. | Memory controller and method of operating the same |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9588883B2 (en) * | 2011-09-23 | 2017-03-07 | Conversant Intellectual Property Management Inc. | Flash memory system |
US10015048B2 (en) | 2014-12-27 | 2018-07-03 | Intel Corporation | Programmable protocol parser for NIC classification and queue assignments |
WO2016181338A1 (en) * | 2015-05-13 | 2016-11-17 | Vinay Bawri | Computer implemented method for ranking, searching and managing contacts in electronic device |
US9825862B2 (en) | 2015-08-26 | 2017-11-21 | Barefoot Networks, Inc. | Packet header field extraction |
US9912774B2 (en) | 2015-12-22 | 2018-03-06 | Intel Corporation | Accelerated network packet processing |
US9837135B2 (en) | 2016-03-03 | 2017-12-05 | Samsung Electronics Co., Ltd. | Methods for addressing high capacity SDRAM-like memory without increasing pin cost |
US11223520B1 (en) | 2017-01-31 | 2022-01-11 | Intel Corporation | Remote control plane directing data plane configurator |
US10694006B1 (en) | 2017-04-23 | 2020-06-23 | Barefoot Networks, Inc. | Generation of descriptive data for packet fields |
US10826840B1 (en) | 2017-07-23 | 2020-11-03 | Barefoot Networks, Inc. | Multiple copies of stateful tables |
US10594630B1 (en) | 2017-09-28 | 2020-03-17 | Barefoot Networks, Inc. | Expansion of packet data within processing pipeline |
US10452540B2 (en) * | 2017-10-20 | 2019-10-22 | International Business Machines Corporation | Memory-mapped interface for message passing computing systems |
WO2020093654A1 (en) * | 2018-11-06 | 2020-05-14 | Genesys Logic, Inc. | Multichip system and data processing method adapted to the same for implementing neural network application |
US10817206B2 (en) * | 2019-01-30 | 2020-10-27 | EMC IP Holding Company, LLC | System and method for managing metadata redirections |
US11210093B2 (en) | 2019-04-08 | 2021-12-28 | Micron Technology, Inc. | Large data read techniques |
US11269552B2 (en) | 2019-06-14 | 2022-03-08 | Micron Technology, Inc. | Multi-pass data programming in a memory sub-system having multiple dies and planes |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5278961A (en) * | 1990-02-22 | 1994-01-11 | Hewlett-Packard Company | Physical address to logical address translator for memory management units |
DE69428881T2 (de) * | 1994-01-12 | 2002-07-18 | Sun Microsystems, Inc. | Logisch adressierbarer physikalischer Speicher für ein Rechnersystem mit virtuellem Speicher, das mehrere Seitengrössen unterstützt |
US6738889B2 (en) * | 1999-07-12 | 2004-05-18 | International Business Machines Corporation | Apparatus and method for providing simultaneous local and global addressing with hardware address translation |
US6795907B2 (en) * | 2001-06-28 | 2004-09-21 | Hewlett-Packard Development Company, L.P. | Relocation table for use in memory management |
US6968398B2 (en) * | 2001-08-15 | 2005-11-22 | International Business Machines Corporation | Method of virtualizing I/O resources in a computer system |
US7389398B2 (en) * | 2005-12-14 | 2008-06-17 | Intel Corporation | Methods and apparatus for data transfer between partitions in a computer system |
DE102005060601A1 (de) * | 2005-12-17 | 2007-06-21 | Dr. Johannes Heidenhain Gmbh | Verfahren zur Inbetriebnahme einer numerischen Steuerung für Werkzeug- oder Produktionsmaschinen |
US8627335B2 (en) * | 2006-11-13 | 2014-01-07 | Oracle America, Inc. | Method and apparatus for data space profiling of applications across a network |
CN101315602B (zh) * | 2008-05-09 | 2011-01-26 | 浙江大学 | 硬件化的进程内存管理核的方法 |
EP2151763A1 (en) * | 2008-07-28 | 2010-02-10 | Nagravision S.A. | Method and apparatus for obfuscating virtual to physical memory mapping |
US8255613B2 (en) * | 2009-04-30 | 2012-08-28 | International Business Machines Corporation | Wear-leveling and bad block management of limited lifetime memory devices |
KR20110066697A (ko) * | 2009-12-11 | 2011-06-17 | 삼성전자주식회사 | 어드레스 맵핑 테이블 관리 방법 및 그것을 사용하는 메모리 장치 |
GB2479780B (en) * | 2010-04-22 | 2018-04-04 | Advanced Risc Mach Ltd | Preload instruction control |
KR20120134919A (ko) * | 2011-06-03 | 2012-12-12 | 삼성전자주식회사 | 메모리 장치 |
CN102567213B (zh) * | 2011-11-30 | 2014-09-24 | 华中科技大学 | 相变存储器的写均衡方法 |
US9146846B2 (en) * | 2012-09-14 | 2015-09-29 | Advanced Micro Devices, Inc. | Programmable physical address mapping for memory |
US20140122807A1 (en) * | 2012-10-31 | 2014-05-01 | Hewlett-Packard Development Company, Lp. | Memory address translations |
-
2013
- 2013-03-12 US US14/773,549 patent/US20160019161A1/en not_active Abandoned
- 2013-03-12 CN CN201380074555.4A patent/CN105027213A/zh active Pending
- 2013-03-12 WO PCT/US2013/030545 patent/WO2014142812A1/en active Application Filing
- 2013-03-12 KR KR1020157024834A patent/KR20150132151A/ko not_active Application Discontinuation
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11139020B2 (en) | 2018-12-19 | 2021-10-05 | SK Hynix Inc. | Memory controller and method of operating the same |
CN111444115A (zh) * | 2019-01-15 | 2020-07-24 | 爱思开海力士有限公司 | 存储装置及其操作方法 |
US10936508B2 (en) | 2019-01-15 | 2021-03-02 | SK Hynix Inc. | Storage device and method of operating the same |
CN111444115B (zh) * | 2019-01-15 | 2023-02-28 | 爱思开海力士有限公司 | 存储装置及其操作方法 |
US11288202B2 (en) | 2019-02-15 | 2022-03-29 | SK Hynix Inc. | Memory controller and method of operating the same |
Also Published As
Publication number | Publication date |
---|---|
CN105027213A (zh) | 2015-11-04 |
US20160019161A1 (en) | 2016-01-21 |
WO2014142812A1 (en) | 2014-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20150132151A (ko) | 프로그램 가능한 어드레스 매핑 및 메모리 액세스 동작 | |
US10628319B2 (en) | Methods for caching and reading data to be programmed into a storage unit and apparatuses using the same | |
JP6590379B2 (ja) | 一部書き込み済みブロックの取り扱い | |
KR100780861B1 (ko) | 버퍼 메모리를 내장한 플래시 메모리 장치 및 플래시메모리 시스템 | |
US10324651B2 (en) | Data transmission method, and storage controller and list management circuit using the same | |
WO2015047962A1 (en) | Volatile memory architecture in no-volatile memory devices and related controllers | |
CN109952565B (zh) | 内存访问技术 | |
US20130097362A1 (en) | Data writing method, and memory controller and memory storage apparatus using the same | |
US11157399B2 (en) | Data storage devices and data processing methods with dynamic programming scheme | |
US9619380B2 (en) | Data writing method, memory control circuit unit and memory storage apparatus | |
US9122583B2 (en) | Memory controller and memory storage device and data writing method | |
US20110029741A1 (en) | Data management method and memory deivce | |
US8423707B2 (en) | Data access method for flash memory and storage system and controller using the same | |
CN111026325B (zh) | 闪存控制器、闪存控制器的控制方法及相关的电子装置 | |
TW202314723A (zh) | 記憶體定址方法及相關聯的控制器 | |
US9378130B2 (en) | Data writing method, and memory controller and memory storage apparatus using the same | |
KR20110072205A (ko) | 불휘발성 메모리 장치 및 그것의 데이터 저장 방법 | |
WO2016043158A1 (ja) | メモリ制御回路および記憶装置 | |
US8738847B2 (en) | Data writing method, and memory controller and memory storage apparatus using the same | |
US10289334B2 (en) | Valid data merging method, memory controller and memory storage apparatus | |
US8832358B2 (en) | Data writing method, memory controller and memory storage apparatus | |
US10671322B1 (en) | Method for performing storage space management, associated data storage device, and controller thereof | |
US8341378B2 (en) | Data storage device and data access method | |
CN110851372B (zh) | 储存装置及快取区定址方法 | |
US10956085B2 (en) | Memory system and processor system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
N231 | Notification of change of applicant | ||
WITN | Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid |