KR20240054404A - 고속 메모리 액세스를 위한 시스템들 및 방법들 - Google Patents

고속 메모리 액세스를 위한 시스템들 및 방법들 Download PDF

Info

Publication number
KR20240054404A
KR20240054404A KR1020247012484A KR20247012484A KR20240054404A KR 20240054404 A KR20240054404 A KR 20240054404A KR 1020247012484 A KR1020247012484 A KR 1020247012484A KR 20247012484 A KR20247012484 A KR 20247012484A KR 20240054404 A KR20240054404 A KR 20240054404A
Authority
KR
South Korea
Prior art keywords
memory
local
mapping table
cache memory
soc
Prior art date
Application number
KR1020247012484A
Other languages
English (en)
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 퀄컴 인코포레이티드
Publication of KR20240054404A publication Critical patent/KR20240054404A/ko

Links

Images

Classifications

    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

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)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

고속 메모리 액세스를 위한 시스템들 및 방법들이 개시된다. 일 양태에서, 외부 메모리에 저장된 부분 논리적-물리적(logical to physical, L2P) 맵핑 테이블 뿐만 아니라 로컬 메모리(예컨대, 동적 랜덤 액세스 메모리(dynamic random-access memory, DRAM))에 저장된 로컬 L2P 맵핑 테이블을 구비한, 예를 들어, 범용 파일 시스템(Universal File System, UFS) 메모리(예컨대, NAND 플래시 메모리)와 같은 외부 메모리에 커플링된 시스템 온 칩(SoC) 내의, 예를 들어, 제어 회로와 같은 프로세서. 제어 회로는 로컬 L2P 맵핑 테이블 내의 엔트리들 중 몇 퍼센트가 활성인지를 비활성과 비교하여 평가할 수 있다. 비활성의 수가 활성의 수를 초과하는 경우, 제어 회로는 로컬 L2P 맵핑 테이블에 액세스하지 않고 판독 커맨드를 보낼 수 있다.

Description

고속 메모리 액세스를 위한 시스템들 및 방법들
우선권 출원
본 출원은 2021년 11월 4일자로 출원되고 발명의 명칭이 "SYSTEMS AND METHODS FOR FAST MEMORY ACCESS"인 미국 특허 출원 제17/453,572호에 대한 우선권을 주장하며, 이는 본 명세서에 참조로서 전체적으로 포함된다.
I. 개시의 분야
본 개시내용의 기술은 일반적으로 NAND 플래시 메모리에 저장된 데이터에 액세스하는 것에 관한 것이다.
II. 배경기술
현대 사회에서 컴퓨팅 디바이스들이 넘쳐나고, 더 구체적으로는, 이동 통신 디바이스들이 점점 더 보편화되었다. 이러한 이동 통신 디바이스들의 보급은 이제 이러한 디바이스들 상에서 인에이블되는 많은 기능들에 의해 부분적으로 주도되고 있다. 이러한 디바이스들에서의 프로세싱 능력의 증가는 이동 통신 디바이스들이 순수한 통신 도구에서 모바일 엔터테인먼트 센터로 진화하여, 사용자 경험을 향상시킬 수 있게 되었음을 의미한다. 대부분의 모든 컴퓨팅 디바이스는 데이터 및 동작 명령들을 저장하기 위해 다양한 레벨들의 메모리에 의존한다. 예를 들어, NAND 플래시 메모리에 액세스하는 시스템 메모리가 있을 수 있다. NAND 플래시 메모리에 대한 액세스는 상대적으로 느리기 때문에, 메모리 액세스를 가속하기 위한 어드레스 맵핑을 가능하게 하는 프로세서와 연관된 캐시 메모리가 존재할 수 있다. 메모리 액세스를 개선하는 다양한 방법들이 있지만, 메모리 액세스 개선을 위한 여지는 항상 있는 것으로 보인다.
발명을 실시하기 위한 구체적인 내용에 개시된 양태들은 고속 메모리 액세스를 위한 시스템들 및 방법을 포함한다. 특히, 본 개시내용의 예시적인 양태들은 외부 메모리에 저장된 부분 논리적-물리적(logical-to-physical, L2P) 맵핑 테이블 뿐만 아니라, 로컬 메모리(예컨대, 동적 랜덤 액세스 메모리(DRAM))에 저장된 로컬 L2P 맵핑 테이블을 구비한 예를 들어, 범용 플래시 저장(universal flash storage, UFS) 메모리(예컨대, NAND 플래시 메모리)와 같은 외부 메모리에 커플링된, 예를 들어, 시스템 온 칩(system on a chip, SoC) 내의 제어 회로와 같은 프로세서를 고려한다. 제어 회로는 로컬 L2P 맵핑 테이블 내의 엔트리들 중 몇 퍼센트가 활성인지를 비활성과 비교하여 평가할 수 있다. 비활성의 수가 활성의 수를 초과하는 경우, 제어 회로는 로컬 L2P 맵핑 테이블에 액세스하지 않고 판독 커맨드를 보낼 수 있다. 이러한 방식으로 로컬 메모리를 스킵하는 것은 외부 메모리 내의 더 최신 엔트리들에 의존하는데, 이는 UFS 메모리에 대한 더 빠른 메모리 호출을 초래하여, 더 나은 사용자 경험을 낳는다.
일 양태에서 이와 관련하여, SoC가 개시된다. SoC는 외부 캐시 메모리를 갖는 UFS 메모리에 결합되도록 구성된 메모리 버스 인터페이스를 포함한다. 외부 캐시 메모리는 UFS 메모리의 부분 L2P 맵핑 테이블을 포함한다. SoC는 또한 UFS 메모리의 로컬 L2P 맵핑 테이블을 포함하는 로컬 캐시 메모리를 포함한다. SoC는 또한 메모리 버스 인터페이스 및 로컬 캐시 메모리에 커플링된 제어 회로를 포함한다. 제어 회로는 로컬 캐시 메모리 내의 로컬 L2P 맵핑 테이블의 활성 부분의 활성 크기를 결정하도록 구성된다. 제어 회로는 또한 활성 부분의 활성 크기를 임계치와 비교하도록 구성된다.
다른 양태에서, SoC가 개시된다. SoC는 외부 캐시 메모리를 갖는 UFS 메모리에 결합되도록 구성된 메모리 버스 인터페이스를 포함한다. 외부 캐시 메모리는 UFS 메모리의 부분 L2P 맵핑 테이블을 포함한다. SoC는 또한 UFS 메모리의 로컬 L2P 맵핑 테이블을 포함하는 로컬 캐시 메모리를 포함한다. SoC는 또한 메모리 버스 인터페이스 및 로컬 캐시 메모리에 커플링된 제어 회로를 포함한다. 제어 회로는 로컬 캐시 메모리 내의 로컬 L2P 맵핑 테이블의 비활성 부분의 비활성 크기를 결정하도록 구성된다. 제어 회로는 또한 비활성 부분의 비활성 크기를 임계치와 비교하도록 구성된다.
다른 양태에서, 호스트로부터 메모리에 액세스하는 방법이 개시된다. 방법은 원격 메모리 디바이스 내의 외부 캐시 메모리 내의 부분 L2P 맵핑 테이블에 대해 호스트와 연관된 로컬 캐시 메모리 내의 로컬 L2P 맵핑 테이블의 활성 부분의 활성 크기를 결정하는 단계를 포함한다. 방법은 또한 활성 부분의 활성 크기를 임계치와 비교하는 단계를 포함한다.
도 1은 호스트 및 그와 연관된 범용 플래시 저장(UFS) 메모리를 구비한 종래의 컴퓨팅 시스템의 블록도이다.
도 2는 메모리 액세스 시간들을 개선하기 위해 호스트 퍼포먼스 부스터(HPB)를 사용하고 메모리 액세스 시간들을 추가로 개선하기 위해 본 개시내용의 예시적인 양태들을 사용할 수 있는 UFS 메모리가 연관된 예시적인 컴퓨팅 시스템의 블록도이다.
도 3은 캐시 히트들 및 캐시 미스들이 있는 종래의 메모리 액세스 시간들의 신호 대 시간 다이어그램이다.
도 4는 본 개시내용의 예시적인 양태들 하에서 메모리 액세스들을 보여주는 호스트 및 UFS 메모리가 연관된 컴퓨팅 디바이스의 블록도이다.
도 5는 본 개시내용의 예시적인 양태들에 따른 메모리 액세스 시간들의 신호 대 시간 다이어그램이다.
도 6은 기존 및 인에이블된 디바이스들과 함께 작동하는 본 개시내용의 예시적인 양태들과 연관된 프로세스의 흐름도이다.
도 7은 본 개시내용의 고속 메모리 액세스 양태들에 따라 동작할 수 있는 호스트 및 UFS 메모리를 갖는 컴퓨팅 디바이스의 블록도이다.
이제 도시된 도면들을 참조하면, 본 개시의 몇몇 예시적인 양상들이 설명된다. 단어 "예시적인"은 "예, 예증, 또는 예시로서 기능함"을 의미하도록 본 명세서에서 사용된다. "예시적인" 것으로서 본 명세서에서 설명된 임의의 양태는 다른 양태들에 비해 반드시 바람직하다거나 이로운 것으로서 해석되지는 않아야 한다.
발명을 실시하기 위한 구체적인 내용에 개시된 양태들은 고속 메모리 액세스를 위한 시스템들 및 방법을 포함한다. 특히, 본 개시내용의 예시적인 양태들은 외부 메모리에 저장된 부분 논리적-물리적(L2P) 맵핑 테이블 뿐만 아니라, 로컬 메모리(예컨대, 동적 랜덤 액세스 메모리(DRAM))에 저장된 로컬 L2P 맵핑 테이블을 구비한 예를 들어, 범용 플래시 저장(UFS) 메모리(예컨대, NAND 플래시 메모리)와 같은 외부 메모리에 커플링된, 예를 들어, 시스템 온 칩(SoC) 내의 제어 회로와 같은 프로세서를 고려한다. 제어 회로는 로컬 L2P 맵핑 테이블 내의 엔트리들 중 몇 퍼센트가 활성인지를 비활성과 비교하여 평가할 수 있다. 비활성의 수가 활성의 수를 초과하는 경우, 제어 회로는 로컬 L2P 맵핑 테이블에 액세스하지 않고 판독 커맨드를 보낼 수 있다. 이러한 방식으로 로컬 메모리를 스킵하는 것은 외부 메모리 내의 더 최신 엔트리들에 의존하는데, 이는 UFS 메모리에 대한 더 빠른 메모리 호출을 초래하여, 더 나은 사용자 경험을 낳는다.
호스트 및 UFS 메모리를 갖는 컴퓨팅 디바이스의 간략한 개요가 도 1에 제공된다. 도 2는 호스트 퍼포먼스 부스터(HPB)가 인에이블되어 있고 본 개시내용의 예시적인 양태들을 구현할 수 있는 유사한 컴퓨팅 디바이스를 도시한다. 도 3은, 도 4에서 시작하여 더 잘 도시되는 바와 같이 본 개시내용의 예시적인 양태들이 어떻게 성능을 개선할 수 있는지 강조하기 위하여 캐시 미스들을 초래하는 메모리 호출들이 성능에 부정적인 영향을 줄 수 있는 상황들을 도시한다.
이와 관련하여, 도 1은 내부에 UFS 제어기(104)를 갖는 시스템 온 칩(SoC)(102)을 구비한 컴퓨팅 디바이스(100)를 도시한다. SoC(102)는 3차원(3D) IC 제조 기술들을 이용하여 가능한 것과 같이 아마도 상이한 계층들 상에서 내부에 다중 기능들을 갖는 단일 집적 회로(IC)일 수 있고, 적층된 다이들의 세트(예컨대, 플립 칩 배열) 등일 수 있다. SoC(102)는 UFS 버스(108)에 의해 UFS 메모리(106)에 커플링될 수 있다. UFS 메모리(106)는 NAND 메모리 요소(110) 및 SRAM 메모리 요소(112)를 포함할 수 있다. NAND 메모리 요소(110)는 전체 L2P 맵핑 테이블을 내부에 저장할 수 있고, 이러한 전체 L2P 맵핑 테이블은 항상 가장 최신이다. SRAM 메모리 요소(112)는 가장 최근(및/또는 가장 빈번하게) 액세스된 논리 어드레스들에 대응하는 엔트리들을 갖는 부분 L2P 맵핑 테이블을 포함하는 외부 캐시를 포함할 수 있다. NAND 메모리 요소(110)는 SRAM 메모리 요소(112)와 비교하여 상대적으로 느린 판독 시간들을 가질 수 있다.
사용 시, UFS 제어기(104)가, 물리적 어드레스를 찾기 위해 초기에 SRAM 메모리 요소(112)에 질의하는, 판독 커맨드를 생성할 수 있음이 이해될 것이다. 부분 L2P 맵핑 테이블이 요청된 어드레스에 대한 L2P 맵핑을 포함하는 경우, UFS 메모리(106)는 SRAM 메모리 요소(112)로부터 L2P 맵 엔트리를 검색한다. 이어서 UFS 메모리(106)는 NAND 메모리 요소(110)로부터 논리 블록을 판독하고 데이터를 SoC(102)로 전달한다(도 3의 일반적 시그널링 케이스(300) 참조). 그러나, 부분 L2P 맵핑 테이블이 논리적 어드레스를 포함하지 않는 경우, UFS 메모리(106)는 판독 커맨드를 수신하고 NAND 메모리 요소(110) 내의 전체 L2P 맵핑 테이블로부터 물리적 어드레스를 판독한다. UFS 메모리(106)는 SRAM 메모리 요소(112) 내의 부분 L2P 맵핑 테이블에 엔트리를 저장한다. 이어서 L2P 맵 엔트리는 SRAM 메모리 요소(112)로부터 검색된다. 이어서 UFS 메모리(106)는 NAND 메모리 요소(110)로부터 논리 블록을 판독하고 데이터를 SoC(102)로 전달한다(도 3의 일반적 시그널링 케이스(310) 참조).
SRAM 메모리 요소(112)에 제공된 바와 같이 캐시를 이용하는 것이 부분 L2P 맵핑 테이블에 엔트리가 있을 때 NAND 메모리 요소(110) 내의 논리 블록들에 액세스하는 것을 촉진할 수 있지만, 시그널링 케이스(310)를 초래하는 캐시 미스가 있는 시간들이 있을 것이다. NAND 메모리 요소(110) 내의 전체 L2P 맵핑 테이블로부터 어드레스를 검색하기 위한 추가 시간은 사용자 경험에 부정적인 영향을 줄 수 있고, 컴퓨팅 디바이스(100) 내의 소정 동작들에 허용불가능한 레이턴시를 추가할 수 있다.
성능을 개선하기 위해, 산업계는 HPB의 개념을 채택하는 방향으로 나아가고 있는데, 이는 도 3의 케이스들(320, 330)을 이용하여 도 2에서 더 잘 설명된 바와 같이 전체 L2P 맵핑 테이블을 SoC로 이동시킨다. 이와 관련하여, 도 2는 내부에 UFS 제어기(204)를 갖는 SoC(202)를 구비한 컴퓨팅 디바이스(200)를 도시한다. SoC(202)는 UFS 버스(208)에 의해 UFS 메모리(206)에 커플링될 수 있다. UFS 메모리(206)는 NAND 메모리 요소(210) 및 SRAM 메모리 요소(212)를 포함할 수 있다. NAND 메모리 요소(210)는 전체 L2P 맵핑 테이블을 내부에 저장할 수 있고, 이러한 전체 L2P 맵핑 테이블은 항상 가장 최신이다. SRAM 메모리 요소(212)는 가장 최근(및/또는 가장 빈번하게) 액세스된 논리 어드레스들에 대응하는 엔트리들을 갖는 부분 L2P 맵핑 테이블을 포함하는 캐시를 포함할 수 있다. 추가적으로, SoC(202)는 또한 로컬 L2P 맵핑 테이블을 내부에 저장하는 DRAM 요소(214)를 포함할 수 있다. DRAM 요소(214)는 캐시의 역할을 하고, SoC(202)가 물리적 어드레스에 즉시 액세스하게 한다. 이어서 SoC(202)는 판독 커맨드(도 3의 일반적 시그널링 케이스(320) 참조)를 이용하여 물리적 어드레스를 UFS 메모리(206)에 보낼 수 있다.
그러나, DRAM 요소(214) 내의 로컬 L2P 맵핑 테이블 내의 엔트리들이 날짜가 지났거나 또는 부정확한 때가 있다. 예를 들어, 때때로 데이터는 내부 유지 목적들(예컨대, 리프레시 동작들, 가비지 수집, 판독 회수, 판독 방해 등)을 위해 NAND 메모리 요소(210)의 다른 물리적 영역으로 이동될 필요가 있다. 이러한 경우들에서, DRAM 요소(214) 내의 로컬 L2P 맵핑 테이블은 NAND 메모리 요소(210) 내의 전체 L2P 맵핑 테이블과 동기화되지 않을 수 있다. 전통적으로, HPB는 UFS 메모리(206)가 SoC(202)에 업데이트를 보낼 수 있게 한다. 그러나, 이 업데이트는 주기적이며 즉각적이지 않다. 따라서, 동기화되지 않은 어드레스로 지향되는 판독 동작들은 캐시 미스도 초래할 수 있다(도 3의 일반적 시그널링 케이스(330) 참조). 이러한 캐시 미스들은 사용자 경험에 부정적인 영향을 주고/주거나 잠재적으로 컴퓨팅 디바이스(200)에 허용불가능한 레이턴시를 초래할 수 있다.
도 3은 시그널링 케이스들(300, 310, 320, 330)의 비교를 제공한다. 시그널링 케이스(300)는 판독 커맨드(302)가 발행되고 UFS 메모리(106)로 송신되는 것으로 시작하는데, 이는 304에서 SRAM 메모리 요소(112) 내의 부분 L2P 맵핑 테이블로부터 L2P 맵 엔트리를 검색한다. 부분 L2P 맵핑 테이블로부터의 논리적 어드레스를 이용하여, UFS 메모리(106)는 306에 NAND 메모리 요소(110)로부터 논리 블록을 판독하고 데이터를 SoC(102)로 전달한다. 정확하게 스케일링되지 않았지만, 306의 크기는 NAND 메모리 요소(110)에 액세스하는 상대적 느림을 304에서 SRAM 메모리 요소(112)에 액세스하는 것과 비교하여 나타낸다.
시그널링 케이스(310)는 컴퓨팅 디바이스(100)에 대한 캐시 미스를 도시하고, 판독 커맨드(312)가 발행되고 UFS 메모리(106)로 송신되는 것으로 시작한다. UFS 메모리(106)는 314에서 SRAM 메모리 요소(112)를 살펴보고, 맵핑 엔트리를 발견하지 못하고, 그에 따라 NAND 메모리 요소(110) 내의 전체 L2P 맵핑 테이블로부터 판독하고 SRAM 메모리 요소(112)에 엔트리를 저장하여, 지연을 초래한다. 이어서 어드레스는 316에 SRAM 메모리 요소(112)로부터 검색된다. 부분 L2P 맵핑 테이블로부터의 논리적 어드레스를 이용하여, UFS 메모리(106)는 318에 NAND 메모리 요소(110)로부터 논리 블록을 판독하고 데이터를 SoC(102)로 전달한다. 캐시 미스에 의해 도입된 추가 지연은 허용불가능한 것으로 판명될 수 있다.
시그널링 케이스(320)는 322에서 UFS 제어기(204)가 DRAM 요소(214)에 액세스하여 로컬 L2P 맵핑 테이블로부터 논리적 어드레스를 검색하는 것으로 시작한다. 이어서 논리적 어드레스를 갖는 판독 커맨드는 324에서 UFS 메모리(206)로 보내진다. 논리적 어드레스를 이용하여, UFS 메모리(206)는 326에 NAND 메모리 요소(210)로부터 논리 블록을 판독하고 데이터를 SoC(202)로 전달한다. 이러한 방식으로 HPB를 이용하는 것은 시그널링 케이스(310)의 캐시 미스들에 의해 야기되는 지연들을 감소시킨다. 그러나, 여전히 시그널링 케이스(330)에 도시된 바와 같이 캐시 미스들에 존재한다.
시그널링 케이스(330)는 332에서 UFS 제어기(204)가 DRAM 요소(214)에 액세스하여 로컬 L2P 맵핑 테이블로부터 논리적 어드레스를 검색하는 것으로 시작한다. 이어서 논리적 어드레스를 갖는 판독 커맨드는 334에서 UFS 메모리(206)로 보내진다. 그러나, 판독 커맨드에서 제공된 논리적 어드레스는 부정확하고, UFS 디바이스는 336에서 NAND 메모리 요소(210) 내의 전체 L2P 맵핑 테이블로부터 L2P 엔트리를 판독해야 한다. 전체 L2P 맵핑 테이블로부터의 어드레스를 이용하여, UFS 메모리(206)는 338에 NAND 메모리 요소(210)로부터 논리 블록을 판독하고 데이터를 SoC(202)로 전달한다. 다시, 이러한 캐시 미스는 허용불가능한 지연을 초래할 수 있다.
본 개시내용의 예시적인 양태들은 비활성이 얼마나 많은지에 대해 로컬 캐시(예컨대, DRAM) 내에서 얼마나 많은 로컬 L2P 맵핑 테이블이 활성인지 추정함으로써 시그널링 케이스(330)에서 도시된 바와 같이 캐시 미스가 발생할 확률을 감소시킨다. 이러한 추정에 기초하여, SoC는 단지 비활성 부분이 활성 부분보다 작을 때 HPB 방법론을 사용한다. 본질적으로, 활성 부분이 비활성 부분보다 크면, SoC는 어드레스가 활성 부분 내에 있고 따라서 정확하고 최신일 가능성이 더 높다고 결정한다. 반대로, 비활성 부분이 활성 부분보다 크면, SoC는 어드레스가 비활성 부분 내에 있고 정확하지 않고 최신이 아닐 가능성이 더 높고, 이와 같이, 사용되어서는 안된다고 결정한다. 이러한 경우에, 외부 캐시(예컨대, SRAM) 내의 부분 L2P 맵핑 테이블 및 그것의 가능한 캐시 미스를 이용하는 것이 HPB 방법론의 가능성있는 캐시 미스를 사용하는 것보다 더 효율적이다.
활성은 HPB 산업계에서 정의된 용어이고, 본 명세서에 사용된 바와 같이, 로컬 L2P 맵핑 테이블 내의 엔트리가 부분 L2P 맵핑 테이블 내의 엔트리와 동일함을 의미한다. 마찬가지로, 비활성은 본 명세서에 사용된 바와 같이 로컬 L2P 맵핑 테이블 내의 엔트리는 엔트리를 갖지 않거나 또는 부분 L2P 맵핑 테이블 내에 상이한 엔트리를 갖는다는 것을 의미한다. 예시적인 양태에서, UFS 메모리는 UFS 메모리에서 유지 활동들(예컨대, 리프레시 동작들) 이후에 또는 그 동안에 활성 및 비활성 어드레스들 또는 영역들을 SoC로 전달하는 것에 있어서 주도권을 잡을 수 있다(디바이스 제어 모드가 개시된다고 가정함). 이러한 업데이트들에 기초하여, SoC는 로컬 캐시(예컨대, DRAM) 내의 로컬 L2P 맵핑 테이블에 업데이트를 진행할 수 있다.
이와 관련하여, 도 4는 UFS 호스트 제어기 또는 제어 회로(404)를 내부에 갖는 SoC(402)를 포함하는 컴퓨팅 디바이스(400)를 도시한다. SoC(402)는 메모리 버스(408)에 의해 UFS 메모리(406)에 커플링되고, 이는 UFS 버스일 수 있다. SoC(402)는 메모리 버스 인터페이스(408A)를 포함할 수 있고, 이는 UFS 버스 인터페이스일 수 있다. 마찬가지로, UFS 메모리(406)는 메모리 버스 인터페이스(408B)를 포함할 수 있다. SoC(402)는 로컬 캐시 메모리, 예를 들어, DRAM(410)을 추가로 포함할 수 있는데, 이는 UFS 메모리(406)에 대한 로컬 L2P 맵핑 테이블(412)을 저장한다. 예시적인 양태에서, 로컬 L2P 맵핑 테이블(412)은 모든 논리적 어드레스에 대한 물리적 어드레스를 갖는 전체 L2P 맵핑 테이블이다. 다른 예시적인 양태에서, 로컬 L2P 맵핑 테이블(412)은 부분 L2P 맵핑 테이블이다. 로컬 L2P 맵핑 테이블(412)을 구비한 DRAM(410)의 존재는 HPB 방법론이 UFS 메모리(406)에 대한 판독 커맨드들에 가능하다는 것을 고려한다.
UFS 메모리(406)는 메모리 제어기(414), 외부 캐시 메모리, 예컨대, SRAM(416), 및 NAND 메모리 요소(418)를 포함할 수 있다. NAND 메모리 요소(418)는 전체 L2P 맵핑 테이블(420)을 내부에 저장할 수 있고, 이러한 전체 L2P 맵핑 테이블(420)은 항상 가장 최신이다. SRAM(416)은 가장 최근(및/또는 가장 빈번하게) 액세스된 논리 어드레스들에 대응하는 엔트리들을 갖는 UFS 메모리(406)의 부분 L2P 맵핑 테이블(422)을 포함하는 외부 캐시이거나 또는 이를 포함할 수 있다.
위에서 언급된 바와 같이, 본 개시내용의 예시적인 양태들은 DRAM(410) 내의 로컬 L2P 맵핑 테이블(412)의 활성 부분의 활성 크기를 결정하고 활성 부분의 활성 크기를 임계치와 비교하는 것을 고려한다. 임계치는 로컬 L2P 맵핑 테이블(412)의 비활성 부분의 비활성 크기일 수 있다. 활성 크기가 결정될 수 있는 다양한 방법들이 존재한다. 예시적인 양태에서, 회로(430)는 하나 이상의 카운터들, 레지스터들, 및 비교기를 포함할 수 있다. UFS 메모리(406)로부터의 업데이트가 있을 때, 카운터는 각각의 활성 엔트리 및 옵션적으로 각각의 비활성 엔트리를 카운트한다. 이어서 비교기는 카운터(들)의 값을 레지스터에 저장된 로컬 L2P 맵핑 테이블(412)의 전체 크기와 비교하여 백분율 등을 결정할 수 있다. 동등하게, 본 개시내용은 로컬 L2P 맵핑 테이블(412)의 비활성 부분의 비활성 크기를 결정하고 비활성 부분의 비활성 크기를 임계치와 비교하는 것을 고려한다. 마찬가지로, 비활성 크기가 결정될 수 있는 다양한 방법들이 존재한다.
비교에 기초하여, 2가지 가능한 시그널링 케이스들(500, 510)이 도 5에 도시된 바와 같이 발생할 수 있다. 구체적으로, 시그널링 케이스(500)는 제어 회로(404)가, 예를 들어 회로(430)를 이용하여, 활성 부분이 비활성 부분보다 크다고 결정할 때 발생한다. 이러한 결정으로부터, 제어 회로(404)는 로컬 L2P 맵핑 테이블(412) 내의 정보가 정확할 가능성이 더 높다고 추론하고, 맹목적으로 모든 판독 트랜잭션들에 대해 로컬 L2P 맵핑 테이블(412)로 이동한다. 따라서, 시그널링 케이스(500)는, 활성 부분이 임계치를 초과한다는 결정 후에, 시그널링 케이스(320)와 유사하게, 502에서 DRAM(410) 내의 로컬 L2P 맵핑 테이블(412)로부터 논리적 어드레스를 검색하는 것으로 시작하고 이어서 504에서 논리적 어드레스를 포함하는 판독 커맨드를 UFS 메모리(406)로 보낸다. 이러한 일반적인 프로세스는 도 4에서 점선(500)으로 도시된다. 이어서 UFS 메모리(406)는 NAND 메모리 요소(418)로부터 논리 블록을 판독한다. 이어서 판독 데이터는 506에 SoC(402)로 전달된다.
그러나, 제어 회로(404)가 활성 부분의 활성 크기가 임계치(예컨대, 비활성 부분의 비활성 크기)를 초과하지 않는다고 결정하면, HPB 방법론의 존재에도 불구하고, 본 개시내용의 예시적인 양태들은 DRAM(410) 내의 로컬 L2P 맵핑 테이블(412)의 사용을 스킵 또는 생략하고 시그널링 케이스(510)를 사용할 수 있다. 시그널링 케이스(510)는 무작위 판독 트랜잭션이 로컬 L2P 맵핑 테이블(412) 내에 부정확한 어드레스를 가질 가능성이 더 높다는 추론에 기초한다. 따라서, 시그널링 케이스(510)에서, 제어 회로(404)는 512에서 판독 커맨드를 메모리 버스(408)를 통해 UFS 메모리(406)로, 특히 SRAM(416)으로 보낸다. SRAM(416)은 514에 논리적 어드레스에 대한 부분 L2P 맵핑 테이블(422)을 체크한다. 이어서, UFS 메모리(406)는 NAND 메모리 요소(418)로부터 논리 블록을 판독하고, 판독 데이터는 516에 SoC(402)로 전달된다. 시그널링 케이스(510)는 시그널링 케이스(330)의 캐시 미스를 회피하고 성능을 개선한다.
본 개시내용과 연관된 프로세스(600)의 더 완전한 설명은 도 6을 참조하여 제공된다. 프로세스(600)는 SoC(402) 내의 파일 시스템으로부터의 판독 요청 개시로 시작한다(블록(602)). 호스트 제어기 또는 제어 회로(404)는 커맨드 검색을 시작한다(블록(604)). 제어 회로(404)는 HPB가 인에이블되는지 여부를 결정할 수 있다(블록(606)).
블록(606)에 대한 대답이 '아니오'인 경우, HPB는 인에이블되지 않고, 프로세스(600)는 레거시 모드로 진입하여 메모리 제어기(414)로부터 어드레스를 페치하는데(블록(608)), 이는 엔트리들을 SRAM(416)에 업데이트하고(블록(610)) 원시 NAND 메모리 요소(418)로부터 데이터를 판독한다(블록(612)). 주의할 점은 이 경로가 가능한 시그널링 케이스들(300, 310)에 대응한다는 것이다.
그러나, 블록(606)에 대한 대답이 '예'인 경우, HPB는 인에이블되고, 프로세스(600)는 DRAM(410) 내의 로컬 L2P 맵핑 테이블(412) 내의 활성 부분의 활성 크기를 결정한다(블록(614)). 그러나 도시되지 않았지만, 동등하게, 프로세스(600), 및 특히 제어 회로(404)는 비활성 부분의 비활성 크기를 결정할 수 있다. 이러한 활성 크기의 결정은 직접 수행되거나(예컨대, 얼마나 많은 어드레스들인 활성인지) 또는 간접적으로 수행될 수 있다(예컨대, 얼마나 많은 어드레스들이 비활성인지 찾아내고 이어서 비활성 어드레스들의 수를 전체 어드레스들의 수에서 감산하여 얼마나 많은 어드레스들이 활성인지 결정함). 이어서 제어 회로(404)는 활성 크기를 임계치와 비교할 수 있다(블록(616)). 언급된 바와 같이, 예시적인 임계치는 비활성 어드레스들 또는 비활성 서브-영역들의 수이다. 주의할 점은 이 임계치는 또한 비활성 어드레스들의 스케일링된 값일 수 있다는 것이다. 예를 들어, 활성 크기는 비활성 크기의 55%보다 크다. 다른 예로서, 활성 어드레스들의 수가 비활성 어드레스들의 수를 초과하는 경우, 비활성 어드레스들의 수는 효과적으로 임계치이다.
비교에 기초하여, 프로세스(600)는 분기된다. 제1 경로에서, 제어 회로(404)는 DRAM(410) 내의 활성 크기가 비활성 크기를 초과한다고 결정하였다(블록(618)). 따라서, 제어 회로(404)는 DRAM(410)으로부터 물리적 어드레스를 페치하는데(블록(620)), 특히 로컬 L2P 맵핑 테이블(412)로부터 페치한다. 물리적 어드레스를 갖는 판독 커맨드를 수신하면, UFS 메모리(406)는 NAND 메모리 요소(418)로부터 원시 데이터를 판독하는 트랜잭션을 수행한다(블록(622)).
제2 경로에서, 제어 회로(404)는 DRAM(410) 내의 활성 크기가 임계치 미만이라고 결정하였다(블록(624)). 따라서, 제어 회로(404)는 DRAM(410) 대신에 SRAM(416)으로부터 물리적 어드레스를 페치하는데(블록(626)), 특히 부분 L2P 맵핑 테이블(422)로부터 페치한다. SRAM(416) 내에 엔트리가 없는 경우, 프로세스는 언급된 바와 같이 레거시 모드로 진입함으로써 어드레스를 고정할 수 있다. 물리적 어드레스가 위치파악되면, UFS 메모리(406)는 NAND 메모리 요소(418)로부터 원시 데이터를 판독하는 트랜잭션을 수행한다(블록(622)).
본 명세서에서 개시된 양태들에 따른 고속 메모리 액세스에 대한 시스템들 및 방법들은 임의의 프로세서 기반 디바이스에서 제공되거나 임의의 프로세서 기반 디바이스에 통합될 수도 있다. 예들은, 제한 없이, 셋톱 박스, 엔터테인먼트 유닛, 내비게이션 디바이스, 통신 디바이스, 고정식 위치 데이터 유닛, 이동식 위치 데이터 유닛, GPS(global positioning system) 디바이스, 모바일 폰, 셀룰러 폰, 스마트 폰, SIP(session initiation protocol) 폰, 태블릿, 패블릿, 서버, 컴퓨터, 휴대용 컴퓨터, 모바일 컴퓨팅 디바이스, 웨어러블 컴퓨팅 디바이스(예를 들어, 스마트 워치, 건강관리 또는 피트니스 추적기, 안경 등), 데스크톱 컴퓨터, PDA(personal digital assistant), 모니터, 컴퓨터 모니터, 텔레비전, 튜너, 라디오, 위성 라디오, 뮤직 플레이어, 디지털 뮤직 플레이어, 휴대용 뮤직 플레이어, 디지털 비디오 플레이어, 비디오 플레이어, DVD(digital video disc) 플레이어, 휴대용 디지털 비디오 플레이어, 자동차, 차량 컴포넌트, 항공 전자 기기 시스템들, 드론 및 멀티콥터를 포함한다.
이와 관련하여, 도 7은 도 4 내지 도 6에 도시된 고속 메모리 액세스 프로세스들을 채용할 수 있는 프로세서 기반 시스템(700)의 예를 도시한다. UFS 메모리를 갖는 모바일 단자가 특히 본 개시내용의 예시적인 양태들로부터 이득을 얻을 수 있는 것으로 고려될 수 있지만, 본 개시내용은 그렇게 제한되지 않으며 NAND 계열 메모리 요소들을 갖는 임의의 시스템에서 유용할 수 있음이 이해될 것이다.
도 7을 계속 참조하면, 프로세서 기반 시스템(700)은 UFS 버스(708)(예컨대, UFS 버스(408))를 통해 대용량 저장 요소(706)(예컨대, UFS 메모리(406))와 통신하는 애플리케이션 프로세서(704)(때때로 호스트로 지칭됨)를 포함한다. 애플리케이션 프로세서(704)는 추가로 디스플레이 직렬 인터페이스(DSI) 버스(712)를 통해 디스플레이(710)에 연결될 수 있고, 카메라 직렬 인터페이스(CSI) 버스(716)를 통해 카메라(714)에 연결될 수 있다. 다양한 오디오 요소들, 예컨대, 마이크로폰(718), 스피커(720), 및 오디오 코덱(722)은 직렬 저전력 인터칩 멀티미디어 버스(serial low-power interchip multimedia bus, SLIMbus)(724)를 통해 애플리케이션 프로세서(704)에 커플링될 수 있다. 추가적으로, 오디오 요소들은 SOUNDWIRE 버스(726)를 통해 서로 통신할 수 있다. 모뎀(728)은 또한 SLIM버스(724) 및/또는 SOUNDWIRE 버스(726)에 커플링될 수 있다. 모뎀(728)은 추가로 주변 컴포넌트 인터커넥트(peripheral component interconnect, PCI) 또는 PCI 익스프레스(PCI express, PCIe) 버스(730) 및/또는 시스템 전력 관리 인터페이스(system power management interface, SPMI) 버스(732)를 통해 애플리케이션 프로세서(704)에 연결될 수 있다.
도 7을 계속 참조하면, SPMI 버스(732)는 또한 로컬 영역 네트워크(LAN 또는 WLAN) IC(LAN IC 또는 WLAN IC)(734), 전력 관리 집적 회로(PMIC)(736), 컴패니언 IC(때때로 브릿지 칩으로 지칭됨)(738), 및 무선 주파수 IC(RFIC)(740)에 커플링될 수 있다. 별개의 PCI 버스들(742, 744)이 또한 애플리케이션 프로세서(704)를 컴패니언 IC(738) 및 WLAN IC(734)에 커플링할 수 있음이 이해될 것이다. 애플리케이션 프로세서(704)는 센서 버스(748)를 통해 센서들(746)에 추가로 연결될 수 있다. 모뎀(728) 및 RFIC(740)는 버스(750)를 이용하여 통신할 수 있다.
도 7을 계속 참조하면, RFIC(740)는 무선 주파수 프론트 엔드(RFFE) 버스(758)를 통해 하나 이상의 RFFE 요소들, 예컨대, 안테나 튜너(752), 스위치(754), 및 전력 증폭기(756)에 커플링될 수 있다. 추가적으로, RFIC(740)는 버스(762)를 통해 포락선 추적 전력 공급부(envelope tracking power supply, ETPS)(760)에 커플링될 수 있고, ETPS(760)는 전력 증폭기(756)와 통신할 수 있다. 집합적으로, RFIC(740)를 포함하는 RFFE 요소들은 RFFE 시스템(764)으로 간주될 수 있다. RFFE 버스(758)가 클록 라인 및 데이터 라인(미도시)으로부터 형성될 수 있음이 이해될 것이다.
당업자들은, 본 명세서에 개시된 양상들과 관련하여 설명된 다양한 예시적인 로직 블록들, 모듈들, 회로들 및 알고리즘들이 전자 하드웨어, 메모리 또는 다른 컴퓨터 판독가능 매체에 저장되고 프로세서 또는 다른 프로세싱 디바이스에 의해 실행되는 명령들, 또는 둘 모두의 조합들로 구현될 수 있음을 추가로 인식할 것이다. 본 명세서에 설명된 마스터 디바이스들, 및 슬레이브 디바이스들은 임의의 회로, 예를 들어, 하드웨어 컴포넌트들, IC, 또는 IC 칩에 이용될 수 있다. 본 명세서에 개시된 메모리는 임의의 타입 및 크기의 메모리일 수 있고, 원하는 임의의 타입의 정보를 저장하도록 구성될 수 있다. 이러한 상호 호환성을 명확하게 설명하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 모듈들, 회로들, 및 단계들이 일반적으로 이들의 기능적 관점에서 위에서 설명되었다. 이러한 기능이 어떻게 구현되는지는, 특정 애플리케이션, 설계 선택들, 및/또는 전체 시스템에 부과되는 설계 제약들에 좌우된다. 당업자들은 설명된 기능을 각각의 특정 애플리케이션에 대해 다양한 방식들로 구현할 수 있지만, 그러한 구현 결정들이 본 개시내용의 범위로부터 벗어나게 하는 것으로 해석되지는 않아야 한다.
본 명세서에 개시된 양상들과 관련하여 설명된 다양한 예시적인 로직 블록들, 모듈들 및 회로들은, 프로세서, DSP(Digital Signal Processor), ASIC(Application Specific Integrated Circuit), FPGA(Field Programmable Gate Array) 또는 다른 프로그래밍가능 로직 디바이스, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 컴포넌트들, 또는 본 명세서에 설명된 기능들을 수행하도록 설계되는 이들의 임의의 조합으로 구현 또는 수행될 수 있다. 프로세서는 마이크로프로세서일 수 있지만, 대안적으로 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기 또는 상태 머신일 수 있다. 프로세서는 또한 컴퓨팅 디바이스들의 조합(예를 들어 DSP 및 마이크로프로세서의 조합, 복수의 마이크로프로세서들, DSP 코어와 결합된 하나 이상의 마이크로프로세서들, 또는 임의의 다른 이러한 구성)으로서 구현될 수 있다.
본 명세서에 개시된 양태들은, 하드웨어로 구현될 수 있고, 하드웨어에 저장되고, 예를 들어, RAM(Random- access Memory), 플래쉬 메모리, ROM(Read Only Memory), EPROM(Electrically Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), 레지스터들, 하드 디스크, 착탈식 디스크, CD-ROM 또는 당업계에 공지된 임의의 다른 형태의 컴퓨터 판독가능 매체에 상주할 수 있는 명령들로 구현될 수 있다. 예시적인 저장 매체는, 프로세서가 저장 매체로부터 정보를 판독하고, 저장 매체에 정보를 기록할 수 있도록 프로세서에 커플링된다. 대안적으로, 저장 매체는 프로세서에 통합될 수 있다. 프로세서 및 저장 매체는 ASIC에 상주할 수 있다. ASIC는 원격 스테이션에 상주할 수 있다. 대안적으로, 프로세서 및 저장 매체는 원격 스테이션, 기지국 또는 서버에 이산 컴포넌트들로서 상주할 수 있다.
본 명세서의 예시적인 양상들 중 임의의 양상에서 설명된 동작 단계들은 예시들 및 논의를 제공하기 위해 설명된 것을 또한 주목한다. 설명된 동작들은, 예시된 순서들과는 다른 다수의 상이한 순서들로 수행될 수 있다. 게다가, 단일 동작 단계에서 설명된 동작들은, 실제로 다수의 상이한 단계들에서 수행될 수 있다. 추가적으로, 예시적인 양상들에서 논의된 하나 이상의 동작 단계들은 결합될 수 있다. 흐름도 도면들에서 예시된 동작 단계들은, 당업자에게 쉽게 자명할 바와 같이 다수의 상이한 변형들을 겪을 수 있음을 이해해야 한다. 정보 및 신호들은 다양한 다른 기술들 및 기법들 중 임의의 것을 사용하여 표현될 수 있음을 당업자는 또한 이해할 것이다. 예컨대, 위의 설명 전반에 걸쳐 참조될 수 있는 데이터, 명령들, 커맨드들, 정보, 신호들, 비트들, 심볼들, 및 칩들은 전압들, 전류들, 전자기파들, 자기장들 또는 자기 입자들, 광학 필드들 또는 광학 입자들, 또는 이것들의 임의의 조합에 의해 표현될 수 있다.
개시내용의 이전 설명은 임의의 당업자가 개시내용을 사용하거나 또는 실시할 수 있도록 제공된다. 본 개시내용에 대한 다양한 변형들이 당업자들에게 쉽게 명백할 것이며, 본 명세서에 정의된 일반적 원리들은 다른 변형들에 적용될 수 있다. 그러므로 본 개시는 본 명세서에서 설명된 예시들 및 설계들로 한정되는 것으로 의도되는 것이 아니라, 본 명세서에 개시된 원리들 및 신규한 특징들에 부합하는 가장 넓은 범위에 따르는 것이다.
구현 예들은 다음의 넘버링된 조항들에서 설명된다:
1. 시스템 온 칩(SoC)으로서,
외부 캐시 메모리를 갖는 범용 플래시 저장(UFS) 메모리에 커플링되도록 구성된 메모리 버스 인터페이스로서, 외부 캐시 메모리는 UFS 메모리의 로컬 논리적-물리적(L2P) 맵핑 테이블을 포함하는, 메모리 버스 인터페이스;
UFS 메모리의 로컬 L2P 맵핑 테이블을 포함하는 로컬 캐시 메모리; 및
제어 회로를 포함하고, 제어 회로는 메모리 버스 인터페이스 및 로컬 캐시 메모리에 커플링되고,
로컬 캐시 메모리 내의 로컬 L2P 맵핑 테이블의 활성 부분의 활성 크기를 결정하고;
활성 부분의 활성 크기를 임계치와 비교하도록 구성된, 시스템 온 칩(SoC).
2. 조항 1에 있어서, 활성 크기를 결정하도록 구성된 제어 회로는 로컬 캐시 메모리 내의 로컬 L2P 맵핑 테이블의 비활성 부분의 비활성 크기를 결정함으로써 활성 크기를 결정하도록 구성된, 시스템 온 칩(SoC).
3. 조항 1 또는 조항 2에 있어서, 임계치는 로컬 캐시 메모리 내의 로컬 L2P 맵핑 테이블의 비활성 부분의 비활성 크기를 포함하는, 시스템 온 칩(SoC).
4. 조항 1 내지 조항 3에 있어서, 제어 회로는, 활성 크기가 임계치를 충족하지 않을 때:
로컬 캐시 메모리 내의 로컬 L2P 맵핑 테이블을 참조하지 않고 외부 캐시 메모리에 판독 커맨드를 보냄으로써 판독 호출을 수행하도록 추가로 구성된, 시스템 온 칩(SoC).
5. 조항 4에 있어서, 제어 회로는, 판독 커맨드에 대해, 외부 캐시 메모리 내의 부분 L2P 맵핑 테이블로부터 L2P 맵 엔트리를 검색하도록 추가로 구성된, 시스템 온 칩(SoC).
6. 조항 4 또는 조항 5에 있어서, 제어 회로는, 판독 커맨드에 대해, 부분 L2P 맵핑 테이블이 판독 커맨드 내의 논리적 어드레스에 대한 엔트리를 갖지 않을 때, UFS 메모리 내의 NAND 메모리 요소에 대한 직접 호출을 발행하도록 추가로 구성된, 시스템 온 칩(SoC).
7. 조항 1 내지 조항 6 중 어느 한 조항에 있어서, 제어 회로는 활성 크기가 임계치를 초과할 때 로컬 캐시 메모리 내의 로컬 L2P 맵핑 테이블 내의 어드레스에 액세스하도록 추가로 구성된, 시스템 온 칩(SoC).
8. 조항 1 내지 조항 7 중 어느 한 조항에 있어서, 제어 회로는 로컬 캐시 메모리 내의 로컬 L2P 맵핑 테이블을 UFS 메모리 내의 어드레스 테이블에 동기화하도록 추가로 구성된, 시스템 온 칩(SoC).
9. 조항 1 내지 조항 8 중 어느 한 조항에 있어서, 제어 회로는 호스트 성능 부스트가 인에이블되는지 여부를 결정하도록 추가로 구성된, 시스템 온 칩(SoC).
10. 조항 1 내지 조항 9 중 어느 한 조항에 있어서, 활성 크기를 결정하도록 구성된 제어 회로는 얼마나 많은 엔트리들이 로컬 L2P 맵핑 테이블과 부분 L2P 맵핑 테이블 사이에서 동일한지에 기초하여 결정하는, 시스템 온 칩(SoC).
11. 조항 1 내지 조항 10 중 어느 한 조항에 있어서, 로컬 캐시 메모리는 동적 랜덤 액세스 메모리(dynamic random access memory, DRAM)를 포함하는, 시스템 온 칩(SoC).
12. 시스템 온 칩(SoC)으로서,
외부 캐시 메모리를 갖는 범용 플래시 저장(UFS) 메모리에 커플링되도록 구성된 메모리 버스 인터페이스로서, 외부 캐시 메모리는 UFS 메모리의 부분 논리적-물리적(L2P) 맵핑 테이블을 포함하는, 메모리 버스 인터페이스;
UFS 메모리의 로컬 L2P 맵핑 테이블을 포함하는 로컬 캐시 메모리; 및
제어 회로를 포함하고, 제어 회로는 메모리 버스 인터페이스 및 로컬 캐시 메모리에 커플링되고,
로컬 캐시 메모리 내의 로컬 L2P 맵핑 테이블의 비활성 부분의 비활성 크기를 결정하고;
비활성 부분의 비활성 크기를 임계치와 비교하도록 구성된, 시스템 온 칩(SoC).
13. 조항 12에 있어서, 비활성 크기를 결정하도록 구성된 제어 회로는 로컬 캐시 메모리 내의 로컬 L2P 맵핑 테이블의 활성 부분의 활성 크기를 결정함으로써 비활성 크기를 결정하도록 구성된, 시스템 온 칩(SoC).
14. 조항 12 또는 조항 13에 있어서, 임계치는 로컬 캐시 메모리 내의 로컬 L2P 맵핑 테이블의 활성 부분의 활성 크기를 포함하는, 시스템 온 칩(SoC).
15. 조항 12 내지 조항 14 중 어느 한 조항에 있어서, 제어 회로는, 비활성 크기가 임계치를 충족하지 않을 때:
로컬 캐시 메모리 내의 로컬 L2P 맵핑 테이블을 참조하지 않고 외부 캐시 메모리에 판독 커맨드를 보냄으로써 판독 호출을 수행하도록 추가로 구성된, 시스템 온 칩(SoC).
16. 조항 15에 있어서, 제어 회로는, 판독 커맨드에 대해, 외부 캐시 메모리 내의 부분 L2P 맵핑 테이블로부터 L2P 맵 엔트리를 검색하도록 추가로 구성된, 시스템 온 칩(SoC).
17. 조항 15에 있어서, 제어 회로는, 판독 커맨드에 대해, 부분 L2P 맵핑 테이블이 판독 커맨드 내의 논리적 어드레스에 대한 엔트리를 갖지 않을 때, UFS 메모리 내의 NAND 메모리 요소에 대한 직접 호출을 발행하도록 추가로 구성된, 시스템 온 칩(SoC).
18. 조항 12 내지 조항 17 중 어느 한 조항에 있어서, 제어 회로는 비활성 크기가 임계치를 초과할 때 로컬 캐시 메모리 내의 로컬 L2P 맵핑 테이블 내의 어드레스에 액세스하도록 추가로 구성된, 시스템 온 칩(SoC).
19. 조항 12 내지 조항 18 중 어느 한 조항에 있어서, 제어 회로는 로컬 캐시 메모리 내의 로컬 L2P 맵핑 테이블을 UFS 메모리 내의 어드레스 테이블에 동기화하도록 추가로 구성된, 시스템 온 칩(SoC).
20. 조항 12 내지 조항 19 중 어느 한 조항에 있어서, 제어 회로는 호스트 성능 부스터가 인에이블되는지 여부를 결정하도록 추가로 구성된, 시스템 온 칩(SoC).
21. 조항 12 내지 조항 20 중 어느 한 조항에 있어서, 비활성 크기를 결정하도록 구성된 제어 회로는 부분 L2P 맵핑 테이블 내의 얼마나 많은 엔트리들이 로컬 L2P 맵핑 테이블에서 발견되지 않는지에 기초하여 결정하는, 시스템 온 칩(SoC).
22. 호스트로부터 메모리에 액세스하는 방법으로서,
원격 메모리 디바이스 내의 외부 캐시 메모리 내의 부분 L2P 맵핑 테이블에 대해 호스트와 연관된 로컬 캐시 메모리 내의 로컬 논리적-물리적(L2P) 맵핑 테이블의 활성 부분의 활성 크기를 결정하는 단계; 및
활성 부분의 상기 활성 크기를 임계치와 비교하는 단계를 포함하는, 호스트로부터 메모리에 액세스하는 방법.
23. 조항 22에 있어서, 활성 크기를 결정하는 단계는 로컬 캐시 메모리 내의 로컬 L2P 맵핑 테이블의 비활성 부분의 비활성 크기를 결정하는 단계를 포함하는, 호스트로부터 메모리에 액세스하는 방법.
24. 조항 22 또는 조항 23에 있어서, 활성 크기를 비교하는 단계는 활성 크기를 로컬 캐시 메모리 내의 로컬 L2P 맵핑 테이블의 비활성 부분의 비활성 크기에 비교하는 단계를 포함하는, 호스트로부터 메모리에 액세스하는 방법.
25. 조항 22 내지 조항 24 중 어느 한 조항에 있어서, 활성 크기가 임계치를 충족하지 않을 때:
로컬 캐시 메모리 내의 로컬 L2P 맵핑 테이블을 참조하지 않고 외부 캐시 메모리에 판독 커맨드를 보냄으로써 판독 호출을 수행하는 단계를 추가로 포함하는, 호스트로부터 메모리에 액세스하는 방법.
26. 조항 25에 있어서, 판독 커맨드에 대해, 외부 캐시 메모리 내의 부분 L2P 맵핑 테이블로부터 L2P 맵 엔트리를 검색하는 단계를 추가로 포함하는, 호스트로부터 메모리에 액세스하는 방법.
27. 조항 25 또는 조항 26에 있어서, 판독 커맨드에 대해, 부분 L2P 맵핑 테이블이 판독 커맨드 내의 논리적 어드레스에 대한 엔트리를 갖지 않을 때, UFS 메모리 내의 NAND 메모리 요소에 대한 직접 호출을 발행하는 단계를 추가로 포함하는, 호스트로부터 메모리에 액세스하는 방법.
28. 조항 22 내지 조항 27 중 어느 한 조항에 있어서, 활성 크기가 임계치를 초과할 때 로컬 캐시 메모리 내의 로컬 L2P 맵핑 테이블 내의 어드레스에 액세스하는 단계를 추가로 포함하는, 호스트로부터 메모리에 액세스하는 방법.
29. 조항 22 내지 조항 28 중 어느 한 조항에 있어서, 호스트 퍼포먼스 부스터가 인에이블되는지 여부를 결정하는 단계를 추가로 포함하는, 호스트로부터 메모리에 액세스하는 방법.

Claims (29)

  1. 시스템 온 칩(system on a chip, SoC)으로서,
    외부 캐시 메모리를 갖는 범용 플래시 저장(UFS) 메모리에 커플링되도록 구성된 메모리 버스 인터페이스 - 상기 외부 캐시 메모리는 상기 UFS 메모리의 부분 논리적-물리적(logical-to-physical, L2P) 맵핑 테이블을 포함함 -;
    상기 UFS 메모리의 로컬 L2P 맵핑 테이블을 포함하는 로컬 캐시 메모리; 및
    제어 회로를 포함하고, 상기 제어 회로는 상기 메모리 버스 인터페이스 및 상기 로컬 캐시 메모리에 커플링되고,
    상기 로컬 캐시 메모리 내의 상기 로컬 L2P 맵핑 테이블의 활성 부분의 활성 크기를 결정하고;
    상기 활성 부분의 상기 활성 크기를 임계치와 비교하도록 구성된, 시스템 온 칩(SoC).
  2. 제1항에 있어서, 상기 활성 크기를 결정하도록 구성된 상기 제어 회로는 상기 로컬 캐시 메모리 내의 상기 로컬 L2P 맵핑 테이블의 비활성 부분의 비활성 크기를 결정함으로써 상기 활성 크기를 결정하도록 구성된, 시스템 온 칩(SoC).
  3. 제1항에 있어서, 상기 임계치는 상기 로컬 캐시 메모리 내의 상기 로컬 L2P 맵핑 테이블의 비활성 부분의 비활성 크기를 포함하는, 시스템 온 칩(SoC).
  4. 제1항에 있어서, 상기 제어 회로는, 상기 활성 크기가 상기 임계치를 충족하지 않을 때:
    상기 로컬 캐시 메모리 내의 상기 로컬 L2P 맵핑 테이블을 참조하지 않고 상기 외부 캐시 메모리에 판독 커맨드를 보냄으로써 판독 호출(read call)을 수행하도록 추가로 구성된, 시스템 온 칩(SoC).
  5. 제4항에 있어서, 상기 제어 회로는, 상기 판독 커맨드에 대해, 상기 외부 캐시 메모리 내의 상기 부분 L2P 맵핑 테이블로부터 L2P 맵 엔트리를 검색하도록 추가로 구성된, 시스템 온 칩(SoC).
  6. 제4항에 있어서, 상기 제어 회로는, 상기 판독 커맨드에 대해, 상기 부분 L2P 맵핑 테이블이 상기 판독 커맨드 내의 논리적 어드레스에 대한 엔트리를 갖지 않을 때, 상기 UFS 메모리 내의 NAND 메모리 요소에 대한 직접 호출을 발행하도록 추가로 구성된, 시스템 온 칩(SoC).
  7. 제1항에 있어서, 상기 제어 회로는 상기 활성 크기가 상기 임계치를 초과할 때 상기 로컬 캐시 메모리 내의 상기 로컬 L2P 맵핑 테이블 내의 어드레스에 액세스하도록 추가로 구성된, 시스템 온 칩(SoC).
  8. 제1항에 있어서, 상기 제어 회로는 상기 로컬 캐시 메모리 내의 상기 로컬 L2P 맵핑 테이블을 상기 UFS 메모리 내의 어드레스 테이블에 동기화하도록 추가로 구성된, 시스템 온 칩(SoC).
  9. 제1항에 있어서, 상기 제어 회로는 호스트 성능 부스트가 인에이블되는지 여부를 결정하도록 추가로 구성된, 시스템 온 칩(SoC).
  10. 제1항에 있어서, 상기 활성 크기를 결정하도록 구성된 상기 제어 회로는 얼마나 많은 엔트리들이 상기 로컬 L2P 맵핑 테이블과 상기 부분 L2P 맵핑 테이블 사이에서 동일한지에 기초하여 결정하는, 시스템 온 칩(SoC).
  11. 제1항에 있어서, 상기 로컬 캐시 메모리는 동적 랜덤 액세스 메모리(dynamic random access memory, DRAM)를 포함하는, 시스템 온 칩(SoC).
  12. 시스템 온 칩(SoC)으로서,
    외부 캐시 메모리를 갖는 범용 플래시 저장(UFS) 메모리에 커플링되도록 구성된 메모리 버스 인터페이스 - 상기 외부 캐시 메모리는 상기 UFS 메모리의 부분 논리적-물리적(logical-to-physical, L2P) 맵핑 테이블을 포함함 -;
    상기 UFS 메모리의 로컬 L2P 맵핑 테이블을 포함하는 로컬 캐시 메모리; 및
    제어 회로를 포함하고, 상기 제어 회로는 상기 메모리 버스 인터페이스 및 상기 로컬 캐시 메모리에 커플링되고,
    상기 로컬 캐시 메모리 내의 상기 로컬 L2P 맵핑 테이블의 비활성 부분의 비활성 크기를 결정하고;
    상기 비활성 부분의 상기 비활성 크기를 임계치와 비교하도록 구성된, 시스템 온 칩(SoC).
  13. 제12항에 있어서, 상기 비활성 크기를 결정하도록 구성된 상기 제어 회로는 상기 로컬 캐시 메모리 내의 상기 로컬 L2P 맵핑 테이블의 활성 부분의 활성 크기를 결정함으로써 상기 비활성 크기를 결정하도록 구성된, 시스템 온 칩(SoC).
  14. 제12항에 있어서, 상기 임계치는 상기 로컬 캐시 메모리 내의 상기 로컬 L2P 맵핑 테이블의 활성 부분의 활성 크기를 포함하는, 시스템 온 칩(SoC).
  15. 제12항에 있어서, 상기 제어 회로는, 상기 비활성 크기가 상기 임계치를 충족하지 않을 때:
    상기 로컬 캐시 메모리 내의 상기 로컬 L2P 맵핑 테이블을 참조하지 않고 상기 외부 캐시 메모리에 판독 커맨드를 보냄으로써 판독 호출을 수행하도록 추가로 구성된, 시스템 온 칩(SoC).
  16. 제15항에 있어서, 상기 제어 회로는, 상기 판독 커맨드에 대해, 상기 외부 캐시 메모리 내의 상기 부분 L2P 맵핑 테이블로부터 L2P 맵 엔트리를 검색하도록 추가로 구성된, 시스템 온 칩(SoC).
  17. 제15항에 있어서, 상기 제어 회로는, 상기 판독 커맨드에 대해, 상기 부분 L2P 맵핑 테이블이 상기 판독 커맨드 내의 논리적 어드레스에 대한 엔트리를 갖지 않을 때, 상기 UFS 메모리 내의 NAND 메모리 요소에 대한 직접 호출을 발행하도록 추가로 구성된, 시스템 온 칩(SoC).
  18. 제12항에 있어서, 상기 제어 회로는 상기 비활성 크기가 상기 임계치를 초과할 때 상기 로컬 캐시 메모리 내의 상기 로컬 L2P 맵핑 테이블 내의 어드레스에 액세스하도록 추가로 구성된, 시스템 온 칩(SoC).
  19. 제12항에 있어서, 상기 제어 회로는 상기 로컬 캐시 메모리 내의 상기 로컬 L2P 맵핑 테이블을 상기 UFS 메모리 내의 어드레스 테이블에 동기화하도록 추가로 구성된, 시스템 온 칩(SoC).
  20. 제12항에 있어서, 상기 제어 회로는 호스트 성능 부스터가 인에이블되는지 여부를 결정하도록 추가로 구성된, 시스템 온 칩(SoC).
  21. 제12항에 있어서, 상기 비활성 크기를 결정하도록 구성된 상기 제어 회로는 상기 부분 L2P 맵핑 테이블 내의 얼마나 많은 엔트리들이 상기 로컬 L2P 맵핑 테이블에서 발견되지 않는지에 기초하여 결정하는, 시스템 온 칩(SoC).
  22. 호스트로부터 메모리에 액세스하는 방법으로서,
    원격 메모리 디바이스 내의 외부 캐시 메모리 내의 부분 L2P 맵핑 테이블에 대해 호스트와 연관된 로컬 캐시 메모리 내의 로컬 논리적-물리적(L2P) 맵핑 테이블의 활성 부분의 활성 크기를 결정하는 단계; 및
    상기 활성 부분의 상기 활성 크기를 임계치와 비교하는 단계를 포함하는, 호스트로부터 메모리에 액세스하는 방법.
  23. 제22항에 있어서, 상기 활성 크기를 결정하는 단계는 상기 로컬 캐시 메모리 내의 상기 로컬 L2P 맵핑 테이블의 비활성 부분의 비활성 크기를 결정하는 단계를 포함하는, 호스트로부터 메모리에 액세스하는 방법.
  24. 제22항에 있어서, 상기 활성 크기를 비교하는 단계는 상기 활성 크기를 상기 로컬 캐시 메모리 내의 상기 로컬 L2P 맵핑 테이블의 비활성 부분의 비활성 크기에 비교하는 단계를 포함하는, 호스트로부터 메모리에 액세스하는 방법.
  25. 제22항에 있어서, 상기 활성 크기가 상기 임계치를 충족하지 않을 때:
    상기 로컬 캐시 메모리 내의 상기 로컬 L2P 맵핑 테이블을 참조하지 않고 상기 외부 캐시 메모리에 판독 커맨드를 보냄으로써 판독 호출(read call)을 수행하는 단계를 추가로 포함하는, 호스트로부터 메모리에 액세스하는 방법.
  26. 제25항에 있어서, 상기 판독 커맨드에 대해, 상기 외부 캐시 메모리 내의 상기 부분 L2P 맵핑 테이블로부터 L2P 맵 엔트리를 검색하는 단계를 추가로 포함하는, 호스트로부터 메모리에 액세스하는 방법.
  27. 제25항에 있어서, 상기 판독 커맨드에 대해, 상기 부분 L2P 맵핑 테이블이 상기 판독 커맨드 내의 논리적 어드레스에 대한 엔트리를 갖지 않을 때, UFS 메모리 내의 NAND 메모리 요소에 대한 직접 호출을 발행하는 단계를 추가로 포함하는, 호스트로부터 메모리에 액세스하는 방법.
  28. 제22항에 있어서, 상기 활성 크기가 상기 임계치를 초과할 때 상기 로컬 캐시 메모리 내의 상기 로컬 L2P 맵핑 테이블 내의 어드레스에 액세스하는 단계를 추가로 포함하는, 호스트로부터 메모리에 액세스하는 방법.
  29. 제22항에 있어서, 호스트 퍼포먼스 부스터가 인에이블되는지 여부를 결정하는 단계를 추가로 포함하는, 호스트로부터 메모리에 액세스하는 방법.
KR1020247012484A 2021-11-04 2022-10-06 고속 메모리 액세스를 위한 시스템들 및 방법들 KR20240054404A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/453,572 2021-11-04
US17/453,572 US11782837B2 (en) 2021-11-04 2021-11-04 Systems and methods for fast memory access
PCT/US2022/077661 WO2023081566A1 (en) 2021-11-04 2022-10-06 Systems and methods for fast memory access

Publications (1)

Publication Number Publication Date
KR20240054404A true KR20240054404A (ko) 2024-04-25

Family

ID=84245867

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020247012484A KR20240054404A (ko) 2021-11-04 2022-10-06 고속 메모리 액세스를 위한 시스템들 및 방법들

Country Status (5)

Country Link
US (1) US11782837B2 (ko)
KR (1) KR20240054404A (ko)
CN (1) CN118159950A (ko)
TW (1) TW202326438A (ko)
WO (1) WO2023081566A1 (ko)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101420754B1 (ko) 2012-11-22 2014-07-17 주식회사 이에프텍 비휘발성 메모리 시스템 및 이를 위한 맵핑 테이블 관리 방법
KR20200144582A (ko) 2018-05-18 2020-12-29 마이크론 테크놀로지, 인크. 관리형 nand 디바이스에서의 호스트 가속 작동
KR20200110863A (ko) * 2019-03-18 2020-09-28 에스케이하이닉스 주식회사 메모리 시스템, 컴퓨팅 장치 및 동작 방법
US11422942B2 (en) 2019-04-02 2022-08-23 SK Hynix Inc. Memory system for utilizing a memory included in an external device

Also Published As

Publication number Publication date
US11782837B2 (en) 2023-10-10
CN118159950A (zh) 2024-06-07
TW202326438A (zh) 2023-07-01
WO2023081566A1 (en) 2023-05-11
US20230134404A1 (en) 2023-05-04

Similar Documents

Publication Publication Date Title
US9098418B2 (en) Coordinated prefetching based on training in hierarchically cached processors
EP3440550A1 (en) Reducing memory access bandwidth based on prediction of memory request size
JP6859361B2 (ja) 中央処理ユニット(cpu)ベースシステムにおいて複数のラストレベルキャッシュ(llc)ラインを使用してメモリ帯域幅圧縮を行うこと
US10303608B2 (en) Intelligent data prefetching using address delta prediction
US20150019823A1 (en) Method and apparatus related to cache memory
CN107667355B (zh) 一种用于提供分区的转换高速缓存器的方法及其设备
US9823854B2 (en) Priority-based access of compressed memory lines in memory in a processor-based system
US20180173623A1 (en) Reducing or avoiding buffering of evicted cache data from an uncompressed cache memory in a compressed memory system to avoid stalling write operations
US11822487B2 (en) Flexible storage and optimized search for multiple page sizes in a translation lookaside buffer
WO2017014914A1 (en) Address translation and data pre-fetch in a cache memory system
CN112639749A (zh) 减少由于地址转换缺失而引起的管线暂缓的方法、装置和系统
KR20240054404A (ko) 고속 메모리 액세스를 위한 시스템들 및 방법들
US20180217930A1 (en) Reducing or avoiding buffering of evicted cache data from an uncompressed cache memory in a compression memory system when stalled write operations occur
US20180336141A1 (en) Worst-case memory latency reduction via data cache preloading based on page table entry read data
TW202111545A (zh) 統一位址轉譯
US10156887B2 (en) Cache memory clock generation circuits for reducing power consumption and read errors in cache memory
US20240202131A1 (en) Processor-based system for allocating cache lines to a higher-level cache memory
US11615033B2 (en) Reducing translation lookaside buffer searches for splintered pages

Legal Events

Date Code Title Description
A302 Request for accelerated examination
E902 Notification of reason for refusal