KR20160061899A - 컴퓨터의 메모리 및 그것의 메모리 내 변환을 수행하는 방법 - Google Patents

컴퓨터의 메모리 및 그것의 메모리 내 변환을 수행하는 방법 Download PDF

Info

Publication number
KR20160061899A
KR20160061899A KR1020150164960A KR20150164960A KR20160061899A KR 20160061899 A KR20160061899 A KR 20160061899A KR 1020150164960 A KR1020150164960 A KR 1020150164960A KR 20150164960 A KR20150164960 A KR 20150164960A KR 20160061899 A KR20160061899 A KR 20160061899A
Authority
KR
South Korea
Prior art keywords
memory
physical address
page table
address
virtual address
Prior art date
Application number
KR1020150164960A
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 KR20160061899A publication Critical patent/KR20160061899A/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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • G06F12/1475Key-lock mechanism in a virtual system, e.g. with translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • 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
    • G06F15/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/651Multi-level translation tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/684TLB miss handling
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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

Abstract

일반적인 관점에 따르면, 컴퓨터의 메모리는 데이터와 페이지 테이블들을 저장하기 위해 구성된 멤뢰 셀들을 포함하고, 페이지 테이블은 적어도 일부에서 가상 어드레스를 물리 어드레스로 맵한다. 컴퓨터의 메모리는 적어도 하나의 메모리 내 프로세서(PIM: Processor-in-memory)를 포함할 수 있다. 각 메모리 내 프로세서는 메모리 셀들에 의해 저장된 데이터의 일부를 이용하는 명령어의 실행을 위한 요청을 수신할 수 있고, 요청은 가상 어드레스, 변환기로부터 물리 어드레스 요청, 및 물리 어드레스의 이용을 위한 명령어 실행을 포함한다. 컴퓨터의 메모리는 각 메모리 내 프로세서를 위해, 페이지 테이블의 액세스에 의해 데이터의 일부에 연관된 가상 어드레스를 데이터의 일부에 연관된 물리 어드레스로 변환하도록 구성된 변환기를 더 포함할 수 있다.

Description

컴퓨터의 메모리 및 그것의 메모리 내 변환을 수행하는 방법{COMPUTATIONAL MEMORY AND METHOD FOR PERFORMING TRANSLATION IN MEMORY THEREOF}
본 발명은 메모리 관리에 관한 것으로서, 더 상세하게는 어드레스 변환에 관련된 컴퓨터의 메모리 및 그것의 메모리 내 변환을 수행하는 방법에 관한 것이다.
가장 일반적인 목적의 프로세서(중앙 처리 장치(CPU: central processing unit))들은 가상 메모리의 일부 형태로 구현된다. 컴퓨팅에서, 가상 메모리는 하드웨어와 소프트웨어 모두를 사용하여 구현될 수 있는 일반적인 메모리 관리 기법이다. 그 기법은 물리적 컴퓨터 메모리에 의해 사용되던 물리 어드레스들 내 프로그램(가상 어드레스들이라 칭함)에 의해 사용된 메모리 어드레스들을 맵한다.
중앙 처리 장치(CPU) 내 어드레스 변환 하드웨어는 가상 어드레스들을 물리 어드레스들로 자동적으로 변환하는 메모리 관리 유닛(MMU: Memory Management)을 나타낸다. 운영 체제(operating system) 내 소프트웨어는 메인 메모리의 용량을 초과함에 따라 컴퓨터 내 물리적으로 존재하는 것보다 더 많은 메모리를 참조할 수 있는 가상 어드레스 공간을 제공하기 위해 이러한 능력을 확장할 수 있다.
가상 메모리의 대부분의 구현은 인접한 가상 메모리 어드레스들의 페이지들 또는 블록들 내 가상 어드레스 공간을 분할한다. 현대의 시스템들 상의 페이지들은 대개 최소한 4 킬로바이트(KB)의 크기이다. 메인 메모리의 큰 가상 어드레스 범위들 또는 양들을 갖는 시스템들은 일반적으로 더 큰 페이지 크기들을 갖는다.
페이지 테이블(page table)들은 프로세스 명령어들을 위한 하드웨어에 의해 사용된 물리 어드레스들 내 어플리케이션들에 의해 보이는 가상 어드레스들을 변환하기 위해 종종 사용된다. 하드웨어는 메모리 관리 유닛 또는 변환 색인 버퍼(TLB: translation look-aside buffer)로 자주 집적되는 이러한 특정 변환을 처리한다. 일반적으로, 페이지 테이블 내 각 엔트리(entry)들은 해당 페이지가 실제 메모리(real memory)인지 또는 그렇지 않은지의 여부를 나타내는 플래그를 수용한다. 메인 메모리 내에 그것이 존재하면, 페이지 테이블 엔트리는 저장된 페이지에서 실제 메모리 어드레스를 포함할 수 있다. 하드웨어에 의한 페이지로 만들어지는 것을 참조하면, 페이지에 대한 페이지 테이블 엔트리는 실제 메모리 내 현재 존재하지 않은 것을 나타내고, 하드웨어는 페이지 결함의 예외를 제기할 수 있다.
시스템들은 전체 시스템을 위한 하나의 페이지 테이블, 각 어플리케이션들 및/또는 세그먼트들을 위한 분리된 페이지 테이블들, 큰 세그먼트들을 위한 페이지 테이블들의 트리(tree) 또는 하이어러키(hierarchy), 또는 이것의 일부 조합을 가질 수 있다. 일반적으로, 하나의 페이지 테이블만이 존재하면, 동일한 시간에서 실행되는 다른 어플리케이션들은 가상 어드레스들의 단일 범위의 다른 일부를 사용한다. 다중 페이지 또는 세그먼트 테이블들이 존재하면, 분리된 페이지 테이블들을 갖는 다중 가상 어드레스 공간들 및 동시 어플리케이션들은 다른 실제 어드레스들로 바뀌어 사용된다.
본 발명의 목적은 어드레스 변환을 메모리 내에서 수행할 수 있는 컴퓨터의 메모리 및 그것의 메모리 내 변환을 수행하는 방법을 제공함에 있다.
본 발명의 목적은 어드레스 변환을 위한 외부의 프로세서로의 액세스에 의해 발생되는 컴퓨터 메모리의 시간 소모와 전원 소모에 따른 비용을 감소시킬 수 있는 컴퓨터의 메모리 및 그것의 메모리 내 변환을 수행하는 방법을 제공함에 있다.
본 발명에 따른 컴퓨터의 메모리는 데이터와 페이지 테이블을 저장하고, 상기 페이지 테이블은 적어도 일부에서 가상 어드레스를 물리 어드레스로 맵하는 메모리 셀들, 가상 어드레스를 포함하고, 상기 메모리 셀들에 의해 저장된 데이터의 일부를 이용하는 명령을 수행하기 위한 요청을 수신하고, 변환기로부터 상기 물리 어드레스를 요청하고, 상기 물리 어드레스를 이용하기 위한 명령어를 실행하는 적어도 하나의 메모리 내 프로세서, 및 각 메모리 내 프로세서를 위해 상기 페이지 테이블의 액세스에 의해 상기 데이터의 부분에 연관된 가상 어드레스를 상기 데이터의 일부에 연관된 물리 어드레스로 변환하는 변환기를 포함한다.
이 실시예에 있어서, 상기 변환기는 상기 컴퓨터의 메모리 외부의 프로세서로부터 전달된 제 2 변환 요청을 수신하고, 상기 제 2 변환 요청은 제 2 가상 어드레스를 포함하며, 상기 페이지 테이블의 액세스에 의해 상기 제 2 가상 어드레스를 제 2 물리 어드레스로 변환하고, 상기 프로세서로 상기 제 2 물리 어드레스를 전송한다.
이 실시예에 있어서, 상기 컴퓨터의 메모리는 가상 어드레스를 포함하는 변환 요청 메시지를 수신하고, 가상 어드레스 또는 에러에 따른 물리 어드레스 중 하나를 포함하는 변환 응답 메시지를 전송하는 입력/출력 디코더/인코더를 포함한다.
이 실시예에 있어서, 상기 변환기는 컴퓨터의 메모리로 외부의 컴포넌트의 지원없이 가상 어드레스를 물리 어드레스로 변환한다.
이 실시예에 있어서, 데이터의 가상 어드레스를 물리 어드레스로 변환하는 페이지 테이블 워커를 포함하고, 상기 페이지 테이블 워커는 가상 어드레스와 페이지 테이블 포인터를 수신하고, 상기 페이지 테이블 워커는 상기 페이지 테이블 포인터를 통해 상기 페이지 테이블에 액세스하고, 상기 페이지 테이블 내 가상 어드레스에 대해 검색하고, 상기 페이지 테이블 워커는 응답으로 물리 어드레스 또는 제 2 페이지 테이블 포인터 중 하나를 수신한다.
이 실시예에 있어서, 명령어가 물리 어드레스에서 저장된 데이터의 액세스를 위해 허용되는지의 여부를 결정하는 보호 및 결함 핸들러를 더 포함하고, 상기 보호 및 결함 핸들러는 물리 어드레스와 명령어에 연관된 보안 식별자를 수신하고, 상기 물리 어드레스가 상기 보안 식별자에 연관되었는지를 결정하고, 상기 보안 식별자가 물리 어드레스에 연관되어 있지 않으면, 보안 예외를 생성한다.
이 실시예에 있어서, 가상 어드레스를 물리 어드레스로 맵하는 캐시를 더 포함하고, 상기 변환기는 상기 가상 어드레스가 상기 캐시 내 저장되었는지를 판단하고, 상기 페이지 테이블 워커를 통해 상기 가상 어드레스가 상기 물리 어드레스로 변환되지 않으면, 상기 캐시를 통해 상기 가상 어드레스를 상기 물리 어드레스로 변환하고, 상기 캐시 내 상기 가상 어드레스를 상기 물리 어드레스로의 매핑을 저장한 후에 상기 변환기는 상기 가상 어드레스를 상기 물리 어드레스로 변환한다.
이 실시예에 있어서, 상기 변환기는 상기 명령어가 상기 물리 어드레스에서 저장된 데이터의 액세스 허용 여부의 결정없이 상기 물리 어드레스를 되돌린다.
이 실시예에 있어서, 상기 번역기는 상기 가상 어드레스가 상기 가상 어드레스를 상기 물리 어드레스로의 변환하기 위해 발견될 때까지 상기 페이지 테이블을 통해 반복하여 워크한다.
이 실시예에 있어서, 상기 번역기와 상기 프로세서를 포함하는 제 1 집적 회로 다이, 및 상기 메모리 셀들을 포함하는 적어도 제 2 집적 회로 다이를 포함하고, 상기 제 1 집적 회로 다이와 상기 제 2 집적 회로 다이는 다이들의 스택의 형성을 위해 연결된다.
본 발명에 따른 컴퓨터의 메모리에 의해 메모리 내 변환을 수행하는 방법은 프로세서로부터 가상 어드레스를 포함하는 변환 요청 메시지를 수신하는 단계, 상기 컴퓨터의 메모리 내 포함된 메모리 셀들로 액세스에 의해 가상 어드레스를 해당 물리 어드레스로 변환하는 단계, 및 상기 가상 어드레스 또는 에러에 따른 상기 물리 어드레스 중 하나를 포함하는 변환 응답 메시지를 상기 프로세서로 전송하는 단계를 포함한다.
이 실시예에 있어서, 상기 수신하는 단계는 상기 컴퓨터의 메모리에 의해 포함된 프로세서 내 메모리로부터 변환 요청 메시지를 수신하는 단계를 포함한다.
이 실시예에 있어서, 상기 수신하는 단계는 외부의 메모리 관리 유닛으로부터 상기 컴퓨터의 메모리로 변환 요청 메시지를 수신하는 단계를 포함한다.
이 실시예에 있어서, 상기 변환하는 단계는 상기 컴퓨터의 메모리에 의해 저장된 페이지 테이블을 통해 반복적으로 워킹하는 단계, 및 상기 가상 메모리가 상기 페이지 테이블들을 발견하면, 상기 페이지 테이블들로부터 상기 물리 어드레스를 검색하는 단계를 포함한다.
이 실시예에 있어서, 상기 물리 어드레스가 보안 식별자에 연관되는지의 여부를 결정하는 단계를 더 포함하고, 상기 변환 요청 메시지는 상기 보안 식별자를 포함하고, 상기 변환 응답 메시지를 전송하는 단계는 상기 물리 어드레스가 상기 보안 식별자에 연관되면, 상기 변환 응답 메시지 내 상기 물리 어드레스를 포함하는 단계, 및 상기 물리 어드레스가 상기 보안 식별자에 연관되지 않으면, 상기 변환 응답 메시지 내 에러를 포함하는 단계를 포함한다.
본 발명에 따른 장치는 가상 어드레스를 포함하는 변환 요청 메시지를 수신하고, 가상 어드레스 또는 에러에 따른 물리 어드레스 중 하나를 포함하는 변환 응답 메시지를 송신하는 입력/출력 디코더/인코더, 및 장치에 의해 포함된 메모리 셀들로 액세스에 의해 상기 가상 어드레스를 상기 물리 어드레스로 변환하는 메모리 내 변환 회로를 포함한다.
이 실시예에 있어서, 상기 변환 요청 메시지는 안전 식별자를 포함하고, 상기 안전 식별자를 수신하고, 상기 물리 어드레스를 수신하고, 상기 물리 어드레스가 상기 보안 식별자에 연관되었는지를 결정하고, 상기 물리 어드레스가 상기 보안 식별자에 연관되지 않았으면, 보안 예외를 생성하는 보호 및 오류 핸들러 회로를 더 포함한다.
이 실시예에 있어서, 상기 변환 요청 메시지는 페이지 테이블 포인터를 포함하고, 상기 메모리 내 변환 회로는 상기 페이지 테이블 포인터를 통해, 상기 메모리 셀들 내 저장된 페이지 테이블에 액세스하고, 상기 페이지 테이블 내 상기 가상 어드레스에 대해 검색하고, 상기 물리 어드레스들을 상기 페이지 테이블로부터 수신한다.
이 실시예에 있어서, 상기 메모리 내 변환 회로는 가상 어드레스를 물리 어드레스들로 맵하기 위한 캐시를 포함하고, 상기 메모리 내 변환 회로는 상기 가상 어드레스가 상기 캐시 내 저장되었는지를 결정하고, 상기 결정에 따라 저장되지 않은 경우, 페이지 테이블 워커를 통해 상기 가상 어드레스를 상기 물리 어드레스로 변환하고, 상기 결정에 따라 저장된 경우, 상기 캐쉬를 통해 상기 가상 어드레스를 상기 캐시 내 상기 물리 어드레스로 매핑한 후, 메모리 내 변환 회로는 상기 가상 어드레스를 상기 물리 어드레스로 변환한다.
이 실시예에 있어서, 상기 입력/출력 디코더/인코더는 상기 장치로 집적된 메모리 내 프로세서로부터 상기 변환 요청 메시지를 수신하기 위해 구성되고, 상기 장치는 페이지 테이블과 데이터를 저장하기 위한 메모리 셀들을 포함하는 컴퓨터의 메모리에 의해 포함된다.
본 발명에 따른 컴퓨터의 메모리는 내부에 메모리 내 변환을 위한 모듈을 포함함에 따라 컴퓨터의 메모리 외부의 프로세서의 변환 색인 버퍼(TLB)로의 액세스를 위한 메시지를 감소시킴으로서, 컴퓨터 메모리의 시간 소모와 전원 소모에 따른 비용을 감소시킬 수 있다.
도 1은 본 발명에 따른 시스템의 예시적인 실시예를 도시한 도면,
도 2는 본 발명에 따른 장치의 예시적인 실시예를 도시한 도면,
도 3은 본 발명에 따른 장치의 예시적인 실시예를 도시한 도면,
도 4는 본 발명에 따른 장치의 예시적인 실시예를 도시한 도면,
도 5는 본 발명에 따른 시스템의 예시적인 실시예를 도시한 도면,
도 6은 본 발명에 따른 시스템의 예시적인 실시예를 도시한 도면,
도 7은 본 발명에 따른 기법의 예시적인 실시예의 순서도, 및
도 8은 본 발명의 원리들에 따라 형성된 장치들을 포함할 수 있는 정보 처리 시스템을 개략적으로 도시한 도면이다.
다양한 예시적인 실시예들은 일부 예시적인 실시예들로 도시된 첨부 도면들을 참조하여 더 상세히 하기에서 설명하기로 한다. 현재 본 발명은 많은 다른 형태들로 구현될 수 있고, 여기에 기술된 예시적인 실시예들로 제한되지 않도록 해석되지 않는다. 오히려, 이 실시예들은 본 기재가 당업자에게 기술된 본 발명의 범위를 철저하고, 완벽하고, 충분히 전달되도록 제공된다. 도면들에서, 크기들과 레이어들과 영역들에 관련된 크기는 명확하게 하기 위해 과장될 수 있다.
엘리먼트 또는 레이어가 “상에”, “접속되는”, “연결되는”으로서 나타날 때, 그것은 존재할 수 있는 다른 엘리먼트들 또는 레이어들, 사이의 엘리먼트들 또는 레이어들 상에 직접 놓여지거나 접속되거나 연결될 수 있다. 이와 반대로, 엘리먼트는 다른 엘리먼트 또는 레이어에“직접 위에”, “직접적으로 접속된”, 또는 “직접적으로 연결된”것으로서 참조될 때, 다른 엘리먼트 또는 레이어에는 현재 엘리먼트들 또는 레이어들 사이에 위치하지 않은 것이다. 동일한 참조번호들은 완전히 동일한 엘리먼트들을 나타낸다. 여기에 사용된 바와 같이, 용어 “및/또는”은 하나 이상의 연관된 리스트된 아이템들의 임의의 및 모든 조합들을 포함한다.
제 1 , 제 2, 제 3 등의 용어들을 다양한 엘리먼트들, 컴포넌트들, 영여들, 레이어들, 및/또는 섹션들을 기술하기 위해 여기서 사용되긴 하지만, 이러한 엘리먼트들, 컴포넌트들, 영역들, 레이어들, 및/또는 섹션들은 이러한 용어들에 의해 제안되지 않는 것으로 이해될 수 있다. 이러한 용어들은 단지 다른 엘리먼트, 컴포넌트, 영역, 레이어, 또는 섹션으로부터 하나의 엘리먼트, 컴포넌트, 영역, 레이어, 또는 섹션을 구분하기 위해 사용된다. 따라서, 제 1 엘리먼트, 컴포넌트, 영역, 레이어, 또는 섹션은 현재 본 발명에서 교시하는 것으로부터 벗어나지 않는 제 2 엘리먼트, 컴포넌트, 영역, 레이어, 또는 섹션의 용어들로 칭할 수 있는 것이 하기에서 논의된다.
“밑에(beneath)”, “아래에(below)”, “하부(lower)”, “위에(above)”, “상부(upper)” 등과 같은 공간적으로 관련된 용어들은 도면들 내에서 도시된 다른 엘리먼트(들) 또는 특징(들)을 위해 하나의 엘리먼트 또는 특징들의 관계를 기술하기 위한 설명의 편의를 위해 기술하기 위해 여기서 사용될 수 있다.
공간적으로 관련된 용어들은 도면에 도시된 방향에 더하여 사용 또는 동작에서 장치의 다른 방향들로 확장되는 것으로 의도될 수 있는 것으로 이해될 수 있다. 예를 들면, 도면들 내 장치가 회전하면, 다른 엘리먼트들 또는 특징들의 “아래에”, “밑에”로서 기재된 엘리먼트는 다른 엘리먼트들 또는 특징들 “위의” 방향일 수 있다. 다라서, 예시적인 용어 “아래에”는 위에 도는 아래에의 방향 모두로 활장될 수 있다. 장치는 그렇지 않으면 지향(90도 회전되거나 다른 방향들에서)되고, 여기에 사용된 공간적으로 관련된 기술어(descriptor)들은 그에 맞춰 해석될 수 있다.
여기에 사용된 전문용어(terminology)는 특정 실시예들만의 기술의 목적을 위한 것이고, 현재 본 발명을 제한하는 것으로 의도되지 않는다. 여기에 사용된 바와 같이, 단수표현은 문맥에서 명확히 다르게 지시하지 않는 한, 복수의 형태도 포함하는 것으로 의도될 수 있다. 용어들, “포함한” 또는/및 “포함하는”의 용어는 상세한 설명에서 사용될 때, 정해진 특징들, 정수들, 스텝들, 동작들, 엘리먼트들, 및/또는 컴포넌트들의 존재를 명시하지만, 하나 이상의 다른 특징들, 정수들, 스텝들, 동작들, 엘리먼트들, 컴포넌트들, 및/또는 그것의 그룹들의 존재 또는 추가를 배제하지 않는 것으로 더 이해될 수 있다.
예시적인 실시예들은 이상화된 예시적인 실시예들(및 중간 구조들)의 개략적인 도면들인 단면도들을 참조하여 여기에 기술된다. 결과들, 예를 들면, 제조 기법들 및/또는 허용 오차들로서 도면들의 형태로부터의 변화들은 예측될 수 있다. 따라서, 예시적인 실시예들은 여기에 도시된 영역들의 특정 형태들로 제한되도록 구성되지 않을 수 있고, 결과들, 예를 들면 제조 기법의 형상들 내 편차들을 포함할 수 있다. 예를 들면, 사각형으로서 도시된 주입된 영역들은 일반적으로, 라운드되거나 커브된 특징들 및/또는 비주입된 영역으로 주입된 것으로부터의 두 개의 성분 변화보다 에지들에서 주입 농도의 기울기를 갖는다. 유사하게, 주입에 의해 형성된 매설 영역은 매설 영역과 주입이 수행된 장소를 통한 표면 사이의 영역에서 일부 구현의 결과일 수 있다. 따라서, 도면들 내 도시된 영역들은 본질 내 개략적이고 그들의 형상은 장치의 영역의 실제 형상을 도시하기 위해 의도되지 않고, 현재 본 발명의 범위를 제한하는 것으로 의도되지 않을 수 있다.
다르게 정의되지 않는 한, 여기에 사용된 모든 용어들(기술적 및 과학적 용어들을 포함)은 본 발명이 속한 해당 기술분야에서 통상의 지식을 가진 자에 의해 공통적으로 이해될 수 있는 동일한 의미를 가질 것이다. 공통적으로 사용된 사전들 내에서 정의된 그러한 용어들은 관련 기술의 문맥으로 그들의 의미와 부합하는 의미를 갖는 것으로 해석되어질 수 있고, 여기에 명확하게 정의하지 않는 한 이상적이고 과도하게 형식적인 의미로 해석되지 않아야 하는 것으로 더 이해될 수 있다.
여기서 예시적인 실시예들은 첨부된 도면을 참조하여 상세히 설명하기로 한다.
도 1은 본 발명에 따른 시스템의 예시적인 실시예를 도시한 도면이다.
도 1을 참조하면, 다양한 실시예들에서, 시스템(100)은 더 큰 시스템(예를 들면, 도 8에 도시된 그것 등)의 일부일 수 있다. 일부 실시예들에서, 시스템(100)은 컴퓨터의 메모리(104)가 외부 프로세서(중앙 처리 장치(central processing unit, 이하 ‘CPU’라 칭하기로 함)와 어떻게 상호 작용할 수 있는 지를 도시할 수 있다. 상술한 것은 단지 몇몇 도시된 예들로서, 본 발명이 상술한 예들로 제한되지 않는 것으로 이해된다.
다양한 실시예들에서, 시스템(100)은 프로세서(102)와 메모리(104)를 포함할 수 있다. 다양한 실시예들에서, 프로세서(102)는 소프트웨어, 펌웨어 또는 그것의 조합의 명령어들 또는 부분들로 실행될 수 있는 하나 이상의 기계들을 실행하기 위해 구성될 수 있다. 시스템(100)은 일부 실시예들에서, 일시적으로, 영구적으로, 반-영구적으로, 또는 그것의 조합 중 하나로, 데이터의 하나 이상의 조각들을 저장하도록 구성된 메모리(104)를 포함할 수 있다. 더욱이, 메모리(104)는 휘발성 메모리(volatile memory), 비휘발성 메모리(non-volatile memory), 또는 그것의 조합을 포함할 수 있다. 다양한 실시예들에서, 시스템(100)은 도시되지 않은 하나 이상의 다른 하드웨어 컴포넌트들(예를 들면, 디스플레이 또는 모니터, 네트워크 인터페이스, 키보드, 마우스, 카메라, 지문 인식기, 비디오 프로세서 등)을 포함할 수 있다. 상술한 것은 단지 몇몇 도시된 예들로서, 본 발명이 상술한 예들로 제한되지 않는 것으로 이해된다.
일부 실시예들에서, 시스템(100)은 가상 메모리의 페이징 기법을 이용할 수 있다. 그러한 실시예에서, 소프트웨어(최소 프로세서(102)에 의해 실행되는)는 가상 어드레스들의 사용으로 만들어질 수 있다. 데이터의 액세스를 위한 프로세서(102)를 위해서는 가상 어드레스들에서 저장되어야하고, 이러한 가상 어드레스들은 물리 어드레스들로 변환되어야만 한다. 이러한 물리 어드레스들은 메모리(104) 내 위치들, 원하는 데이터를 물리적으로 저장하는 메모리 셀들(148) 내 특별한 위치들에 대응할 수 있다.
도시된 실시예에서, 페이징 기법은 메모리(104) 내 하나 이상의 페이지 테이블(138)을 저장할 수 있다. 다양한 실시예들에서, 페이지 테이블들(138)은 다른 페이지 테이블들(138)을 위한 포인터들 또는 참조들을 포함하는 비-리프 페이지 테이블들(non-leaf pages tables)(130)(즉, 하이어러키(hierarchy)의 종단에서가 아닌 페이지 테이블들)과 같은 페이지 테이블들(138)의 하이어러키를 포함할 수 있다. 상술한 것은 단지 몇몇 도시된 예들로서, 본 발명이 상술한 예들로 제한되지 않는 것으로 이해된다.
전형적으로, CPU(102)는 원하는 명령어를 실행시키고, 원하는 데이터(156)를 액세스하기 위해 이용되는 다양한 로직 회로들을 포함하는 하나 이상의 프로세서 코어들(112)을 포함할 수 있다. 이러한 단계에서, 원하는 데이터(156)는 가상 어드레스(152)에 연관될 수 있다. 연관된 물리 어드레스(154)에 실제 액세스되는 원하는 데이터를 위해서는 노출될(uncovered) 필요가 있다.
그러한 실시예에서, CPU(102)는 가상 어드레스들의 집합과, 그들의 해당 물리 어드레스들을 캐시하기 위해 구성된 변환 색인 버퍼(translation look-aside buffer, 이하 ‘TLB’라 칭하기로 함)(114)를 포함할 수 있다. 원하는 가상 어드레스들이 TLB(114) 내에 있으면, 해당 물리 어드레스는 프로세서 코어(112)로 되돌려질 수 있고, 데이터는 메모리(104) 또는 메모리(104)의 메모리 셀들(148)로부터 검색될 수 있다. 원하는 가상 어드레스들이 TLB(114) 내에 없으면(TLB 미스(miss)), TLB(114)(또는 더 일반적으로 메모리 관리 유닛(memory management unit, 이하 ‘MMU’라 칭하기로 함)(116))는 가상 어드레스(152)를 찾기 위한 메모리(104) 내에 저장된 페이지 테이블들(138)과 해당 물리 어드레스(154)을 통해 워크(walk)할 수 있다. TLB 미스가 발생하면, 페이지 워킹(page walking)의 결과는 CPU(102)와 메모리(104) 사이의 다수의 트랜잭션들 또는 메시지들을 초래할 수 있다. 이러한 트랜잭션들은 시간과 전원 소모의 조건들에서 모두 상대적으로 많은 비용이 들 수 있다.
다양한 실시예들에서, CPU(102)는 MMU(116)를 포함할 수 있다. MMU(116)는 CPU(102)와 메모리(104) 사이에 상호 작용들을 관리하기 위해 구성될 수 있다. 일부 실시예들에서, MMU(116)는 TLB(114)를 포함(물리적으로 또는 개념적으로 중 하나로)할 수 있다. 여기에 보여진 실시예들과 달리, 일부 실시예들에서, MMU(116)는 CPU(102)에 집적되지 않을 수 있다.
도시된 실시예에서, 메모리(104)는 프로세서를 포함할 수 있다. 메모리 셀들(148), 및 그러므로 데이터(156)가 집적(예를 들면, 온-다이(on-die) 또는 온-보드(on-board) 등)된 것으로서, 메모리-내-프로세서(processor-in-memory: 이하 ‘PIM’라 칭하기로 함)(122)를 나타낼 수 있다. 다양한 실시예들에서, 다양한 명령어들의 실행은 PIM(122)으로 위임될 수 있다. 다양한 실시예들에서, 이것은 국부적으로 저장될(메모리 내(104)에) 수 있는 명령어들에 연관된 데이터(156)로 인해 CPU(102)와 메모리(104) 사이에 전달되는 데이터(156)를 위한 요구가 경감되는 이점을 갖는다. 다시 말해, 이러한 트랜잭션들은 시간과 전원 소모의 조건들 모두에서 상대적으로 많은 비용이 들 수 있다. PIM(122)의 메모리들은 컴퓨터의 메모리들 또는 컴퓨터의 랜덤 액세스 메모리(RAM: random access memory)들을 나타낼 수 있다.
그러한 실시예에서, 데이터(156)는 가상 어드레스(152)에 연관될 수 있다. 다시 말해, 이러한 데이터(156)를 액세스하기 위해 물리적 어드레스(154)가 사용되어야만 한다.
전형적으로, 이러한 가상 어드레스(152)를 물리 어드레스로(154)의 변환을 위해, PIM(122)은 TLB(114)(CPU(102) 내 포함된)로부터 변환을 요청할 수 있다. TLB 히트(hit)가 발생된다 하더라도, 이러한 변환 요청/응답 트랜잭션은 CPU(102)와 메모리(104) 사이의 다수의 메시지들을 초래한다. 이러한 메시지는 시간과 전원 소모의 조건들 모두에서 상대적으로 많은 비용이 들 수 있다. TLB 미스가 발생되면, 다수의 메시지들이 극적으로(dramatically) 증가할 수 있다.
도시된 실시예에서, 메모리(104)는 변환기 또는 메모리-내-변환(translation-in-memory, 이하 ‘TIM’라 칭하기로 함)(또는, 메모리-내-변환 모듈)(124)을 포함할 수 있다. 그러한 실시예에서, TIM(124)는 페이지 테이블들(138)의 액세스에 의해 데이터(156)의 부분에 연관된 가상 어드레스(152)를 데이터(156)의 부분에 연관된 물리 어드레스(154)로 변환을 위해 구성될 수 있다.
그러한 실시예에서, PIM(122)은 TIM(124) 대신이지만, TLB(114)로 변환 요청을 전송하지 않는다. 도시된 실시예에서, TIM(124)은 캐시들을 포함할 수 있고, 페이지 테이블들(138)(또는 다른 기법의 사용)을 통해 워크하고, PIM(122)에 의해 제공된 가상 어드레스(155)를 물리 어드레스(154)로 변환할 수 있다. 이것은 CPU(102) 또는 컴퓨터의 메모리(104)의 바깥쪽 또는 외부의 임의의 다른 컴포넌트들의 수반없이 수행될 수 있다. 이것은 시간과 전원 소모의 조건들에서 모두 상대적으로 많은 비용이 들 수 있는 CPU와 메모리 사이의 전술한 메시지들을 제거 또는 감소할 수 있다.
다른 실시예에서, CPU(102) 또는 MMU(116)는 TIM(124)로부터 가상 물리 어드레스 변환(virtual-to-physical address translation) 요청을 수신할 수 있다. 그러한 실시예에서, 가상 물리 어드레스 변환은 두 개의 트랜잭션(transaction)들 또는 통신 패킷(communication packet)들과 함께 수행될 수 있다. 이것은 전형적인 TLB 미스와 비교되고, 각 페이지 라인을 읽고, 원하는 가상 어드레스(152)를 위해 검색하는 페이지 테이블들(138)을 통해 워크(walk)하는 것으로서, 비교적 많은 개수의 메시지들을 필요로 할 수 있다.
다양한 실시예들에서, 가상 물리 어드레스 변환의 TIM(124)의 조치(act)는 소프트웨어를 위한 명백한 방법으로 수행될 수 있다. 그러한 실시예에서, 프로세서 코어(112) 또는 PIM(122)에 의해 실행될 수 있는 소프트웨어 또는 명령어들은 TLB(114)/MMU(116) 또는 TIM(124)에 의해 변환될 수 있고, 소프트웨어는 사용된 컴포넌트들에 상관없이 사용가능(agnostic)할 수 있다.
도시된 실시예에서, 단일 메모리(104)가 도시된다. 다양한 실시예들에서, 다른 또는 추가적인 메모리들(미도시)이 사용될 수 있고, 원하는 데이터가 해당 물리 어드레스들에 따른 그들의 메모리 셀들(유사한 메모리 셀들(148))에 저장될 수 있는 것으로 이해될 수 있다. 다양한 실시예들에서, 다른 메모리들은 “덤(dumb)” 메모리들(즉, PIM들(112) 없는 것), 또는 다른 컴퓨터의 메모리들(예를 들면, TIM들을 함께 또는 없는 것도, 활성화(active) 또는 비활성화(inactive))을 포함할 수 있다. 다양한 실시예들에서, 다른 메모리들은 메모리들(예를 들면, 캐쉬 등)의 하이어러키 및/또는 이질적인 메모리 시스템들을 포함할 수 있다. 상술한 것은 단지 몇몇 도시된 예들로서, 본 발명이 상술한 예들로 제한되지 않는 것으로 이해된다.
도 2는 본 발명에 따른 장치의 예시적인 실시예를 도시한 도면이다.
도 2를 참조하면, 다양한 실시예들에서, 장치(200)는 TIM을 포함할 수 있다. 상술한 바와 같이, TIM(200)은 PIM 및/또는 CPU에 의해 액세스될 수 있다.
도시된 실시예에서, TIM(200)은 입력/출력(Input/output, 이하‘IO’라 칭하기로 함) 디코더/인코더(decoder/encoder)(202), 페이지 테이블 워커(page table walker)(204), 및 보호 및 결함 핸들러(protection and fault handler)(206)를 포함할 수 있다. 그러한 실시예에서, IO 디코더/인코더(202)는 프로세서(예를 들면, CPU, PIM 등)로부터 패킷들 또는 메시지들을 수신 및 패킷들 또는 메시지들을 프로세서(예를 들면, CPU, PIM 등)로 전송하도록 구성될 수 있다. 다양한 실시예들에서, IO 디코더/인코더(202)는 프로세서로부터 요청 패킷(212)을 수신할 수 있다. 그러한 실시예에서, 요청 패킷(212)은 가상 어드레스를 물리 어드레스로 변환을 위한 요청을 포함할 수 있다.
도시된 실시예에서, 페이지 테이블 워커(204)는 가상 어드레스를 물리 어드레스로 변환하기 위해 구성될 수 있다. 일 실시예에서, 페이지-테이블 워커(204)는 가상 어드레스(214)와 페이지 테이블 포인터를 수신할 수 있다. 가상 어드레스(214)는 요청 패킷(212) 내에 포함될 수 있다. 일 실시예에서, 기본 페이지 테이블(base page table) 또는 디렉토리 포인터(direct)(216)은 요청 패킷(212) 내에 포함될 수 있고, 페이지 테이블 하이어러키(138)를 위한 스타팅 포인트일 수 있다.
다양한 실시예들에서, 페이지 테이블 워커(204)는 페이지 테이블들(138)에 액세스를 위해 페이지 디렉토리 포인터(216)를 사용할 수 있다. 페이지 테이블 워커(204)는 이후 페이지 테이블들(138)을 통해 워크 또는 읽기하고, 가상 어드레스(214)를 위해 검색을 한다. 다양한 실시예들에서, 이것은 반복적인 프로세스일 수 있다. 페이지 테이블들(138)(예를 들면, 하이어러키얼(hierarchical) 또는 플랫(flat) 등)의 구조를 신뢰하고, 현재 페이지 테이블(138)인지의 여부는 가상 어드레스(214)를 포함하고, 페이지 테이블들(138)은 물리 어드레스 또는 다른 페이지 테이블 포인터(물리적 데이터(220)로 도시된) 중 하나로 되돌릴 수 있다. 그러한 실시예에서, 새로운 페이지 테이블 포인터는 페이지 테이블 하이어러키(138) 내 다른 페이지 테이블을 위한 참조일 수 있다.
일부 실시예들에서, 보호 및 결합 핸들러(206)는 명령어(가상 물리 어드레스 변환 요청(212)에 의해 야기된)가 물리 어드레스에서 저장된 데이터의 액세스를 위해 허용되었는지의 여부를 결정하기 위해 구성될 수 있다. 도시된 실시예에서, 보호 및 결함 핸들러(206)는 보안 식별자를 수신할 수 있고, 또는 일 실시예에서, 보호 링 레벨(protection ring level)(222)을 수신할 수 있다. 그러한 실시예에서, 이러한 보안 식별자(222)는 요청 패킷(212) 내에 포함될 수 있다. 보안 식별자(212)는 명령어가 갖는 액세스 또는 보안 특권(security privilege)들이 무엇인지를 나타낸다.
보호 및 결함 핸들러(206)는 페이지 테이블 워커(204)의 활동에 응답하여 페이지 테이블들(138)로부터 수신된 물리 데이터(220)을 수신하기 위해 구성될 수 있다. 도시된 실시예에서, 물리 데이터(220)가 단지 제 2(또는 다음의) 페이지 테이블 포인터(224)이면, 이것은 페이지 테이블 워커(204)로 릴레이될 수 있고, 페이지 테이블 워커(204)는 페이지 테이블들(138)로 워크를 위해 계속될 수 있다. 다른 실시예에서, 물리 데이터(220)(포인터와 어드레스 사이의)의 이러한 라우팅은 보호 및 결함 핸들러(206)의 외부에서 발생될 수 있다.
물리 데이터(220)가 물리 어드레스를 포함하면, 보호 및 결함 핸들러(206)는 물리 어드레스가 보안 식별자(222)에 연관되었는지의 여부를 결정하기 위해 구성될 수 있다. 보안 식별자(222)와 물리 어드레스 사이의 연관에 의해 결정되는 바와 같이, 명령어가 물리 어드레스에서 저장된 데이터의 액세스를 허용하면, 보호 및 결함 핸들러(206)는 물리 어드레스(226)를 IO 디코더/인코더(202)로 전달한다. 바꾸어 말하면, 명령어가 데이터의 액세스를 허용하지 않으면, 보호 및 결함 핸들러(206)는 보안 예외(227)를 생성할 수 있다. 이러한 보안 예외(227)는 이후, IO 디코더/인코더(202)로 전달된다.
물리 어드레스(226) 또는 보안 예외(227) 중 하나를 수신하면, IO 디코더/인코더(202)는 응답 패킷(230)을 생성하기 위해 구성될 수 있다. 응답 패킷(230)은 수신된 물리 어드레스(226) 또는 보안 예외(227) 중 하나를 포함할 수 있다. 응답 패킷(230)은 요청하는 프로세서(예를 들면, CPU, PIM 등)로 전송될 수 있고, 프로세서는 물리 어드레스(226)를 사용한 데이터를 액세스하거나 보안 예외(227)를 프로세스하는 것 중 하나를 할 수 있다.
도 3은 본 발명에 따른 장치의 예시적인 실시예를 도시한 도면이다.
다양한 실시예들에서, 장치(300)는 TIM을 포함할 수 있다. 상술한 바와 같이, TIM(300)은 컴퓨터의 메모리의 일부로서 포함될 수 있다. 또 상술한 바와 같이, TIM(300)은 PIM 및/또는 CPU에 의해 액세스될 수 있다.
도시된 실시예에서, TIM(300)은 IO 디코더/인코더(202), 보호 및 결함 핸들러(206)를 포함할 수 있다. 그러한 실시예에서, 상술한 바와 같이, IO 디코더/인코더(202)는 IO 디코더/인코더(202)는 프로세서(예를 들면, CPU, PIM 등)로부터 패킷들 또는 메시지들을 수신 및 패킷들 또는 메시지들을 프로세서(예를 들면, CPU, PIM 등)로 전송하도록 구성될 수 있다.
도시된 실시예에서, TIM(300)은 변환기(302)를 포함할 수 있다. 그러한 실시예에서, 변환기(302)는 가상 어드레스와 그들의 해당 물리 어드레스를 캐시하기 위해 구성된 페이지 테이블 캐시(page-table cache)(304)를 포함할 수도 있다. 가상 어드레스를 물리 어드레스로 변환하는 페이지 테이블 워커(204)로서, 매핑은 페이지 테이블 캐시(304)에 저장될 수 있다. 대체 가상 물리 어드레스 변환 요청(212)이 만들어지면, 변환기(302)는 가상 어드레스가 물리 어드레스로 이미 맵되어 있는 것을 확인하기 위해 페이지 테이블 캐시(304) 내를 찾아볼 수 있다. 만약 그렇다면, 저장되거나 캐시된 물리 어드레스(226)는 보호 및 결함 핸들러(206)(또는 직접적으로 IO 디코더/인코더(202))로 되돌려질 수 있다. 만약 그렇지 않다면, 가상 어드레스(214)와 테이블 디렉토리 포인터(216)는 페이지 테이블 워커(204)로 통과될 수 있다.
일부 실시예들에서, 페이지-테이블 캐시(304)는 변환 룩-어사이드 버퍼(translation look-side buffer)를 포함할 수 있다. 다른 실시예에서, 다른 캐싱 구조들이 사용될 수 있다. 상술한 것은 단지 몇몇 도시된 예들로서, 본 발명이 상술한 예들로 제한되지 않는 것으로 이해된다.
도 4는 본 발명에 따른 장치의 예시적인 실시예를 도시한 도면이다.
도 4를 참조하면, 다양한 실시예들에서 장치(400)는 TIM을 포함할 수 있다. 상술한 바와 같이, TIM(400)은 컴퓨터의 메모리의 일부로서 포함될 수 있다. 또 상술한 바와 같이, TIM(300)은 PIM 및/또는 CPU에 의해 액세스될 수 있다.
도시된 실시예에서, TIM(400)은 IO 디코더/인코더(202), 보호 및 결함 핸들러(206)를 포함할 수 있다. 그러한 실시예에서, TIM(400)은 상술한 보호 및 결함 핸들러를 포함하지 않을 수 있다. 그러한 실시예에서, 페이지 테이블(138)은 페이지 테이블 포인터(224)로 되돌릴 때, 페이지 테이블 포인터(224)는 페이지 테이블 워커(204)(또는, 다른 실시예에서, 도 3에서 보이는 바와 같은 변환기)로 직접적으로 전달될 수 있다. 유사하게, 페이지 테이블(138)이 물리 어드레스(226)를 되돌릴 때, 물리 어드레스(226)는 IO 디코더/인코더(202)로 직접적으로 전달될 수 있다. 그러한 실시예에서, 요청 프로세서는 물리 어드레스(226)의 액세스를 허용하는 명령어의 검사를 위해 응답 가능할 수 있다.
도 5는 본 발명에 따른 시스템의 예시적인 실시예를 도시한 도면이다.
도 5를 참조하면, 다양한 실시예에서, 시스템(500)은 더 큰 시스템(예를 들면, 도 7의 그것 등)의 일부일 수 있다. 상술한 것은 단지 몇몇 도시된 예들로서, 본 발명이 상술한 예들로 제한되지 않는 것으로 이해된다.
다양한 실시예들에서, 시스템(100)은 프로세서(CPU)(102)와 컴퓨터의 메모리(504)를 포함할 수 있다. 도시된 실시예에서, 컴퓨터의 메모리(504)는 복수의 PIM들(122, 122a, 122b 등)을 포함할 수 있다. 그러한 실시예에서, 각 PIM들(122, 122a, 122b)은 TIM(524)에 액세스할 수 있다. TIM(524)은 다중 동시 가상 물리 어드레스 변환 요청들을 서비스하기 위해 구성될 수 있고, 다중 프로세서들(예를 들면, CPU(102), PIM(122), PIM(122a), PIM(122b) 등)로부터 그러한 요청들을 서비스하기 위해 구성될 수 있다.
더욱이, 다양한 실시예들에서, TIM(524)는 컴퓨터의 메모리들(504)을 포함하는 다른 CPU들(102)(예를 들면, 다중 CPU 시스템들) 및/또는 PIM들로부터 가상 물리 어드레스 변환 요청들을 프로세스하기 위해 구성될 수 있다. 일 실시예에서, TIM(524)는 PIM(122)의 특정 목적의 버전으로 구현될 수 있다. 상술한 것은 단지 몇몇 도시된 예들로서, 본 발명이 상술한 예들로 제한되지 않는 것으로 이해된다.
도 6은 본 발명에 따른 시스템의 예시적인 실시예를 도시한 도면이다.
도 6을 참조하면, 다양한 실시예들에서, 메모리들은 다중 칩 모듈(multi-chip module)들의 사용에 의해 생성될 수 있다. 이것은 각각의 다이(die)들 상에 제작한 회로와 집적된 장치의 형태를 위해 함께 다이들의 커플링을 포함한다.
도시된 실시예에서, 시스템(600)은 복수의 메모리 어레이 다이들(602)을 포함할 수 있다. 각 메모리 어레이 다이(602)는 데이터 및/또는 명령어들을 저장하기 위해 사용될 수 있는 메모리 셀들(648)을 포함할 수 있다. 도시된 실시예에서, 하나 이상의 메모리 어레이 다이들(602)은 페이지 테이블들의 저장을 위해 사용될 수 있는 메모리 셀들(638)을 포함할 수 있다. 도시된 실시예에서, 메모리 어레이 다이(602)는 동적 랜덤 액세스 메모리(DRAM: dynamic random access memory) 셀들을 포함할 수 있다. 다른 실시예에서, 다른 메모리 셀들(예를 들면, 정적램(SRAM: static RAM), 자기저항램(MRAM: Magnetoresistive RAM), 상변화램(PRAM: Phase-change RAM), 낸드 또는 플래시 메모리(예를 들면, 솔리드 스테이트 드라이브(SSD: Solid State Drive)), 저항성 램(RRAM: Resistive RAM) 등)이 사용될 수 있다. 상술한 것은 단지 몇몇 도시된 예들로서, 본 발명이 상술한 예들로 제한되지 않는 것으로 이해된다.
다양한 실시예들에서 시스템(600)은 PIM(622)와 TIM(624)로 구현된 회로들을 포함하는 로직 다이(604)를 포함할 수 있다. 다양한 실시예들에서, 로직 다이(604)는 메모리 어레이 다이(들)(502)로서, 동일 기술 또는 제조 프로세스들을 사용하여 제작될 수 있다. 상술한 것은 단지 몇몇 도시된 예들로서, 본 발명이 상술한 예들로 제한되지 않는 것으로 이해된다.
도시된 실시예에서, 로직 다이(604)는 다이 스택의 아래 부분에 놓여질 수 있다. 그러한 실시예에서, 하나 이상의 메모리 어레이 다이들(602)이 로직 다이(602)의 위에 위치할 수 있다. 다양한 실시예들에서, 페이지 테이블들(638)은 페이지 테이블들(638)과 가상 물리 어드레스 변환의 워킹을 가능하게 하기 위해 TIM(624)에 공간적으로 근접한 메모리 셀들 내에 저장될 수 있다. 상술한 것은 단지 몇몇 도시된 예들로서, 본 발명이 상술한 예들로 제한되지 않는 것으로 이해된다.
도 7은 본 발명에 따른 기법의 예시적인 실시예의 순서도이다.
도 7을 참조하면, 다양한 실시예들에서 기법(700)은 여기에 기술된 도면들 중 적어도 하나와 같은 시스템들에 의해 사용되거나 생성될 수 있다. 상술한 것은 단지 몇몇 도시된 예들로서, 본 발명이 상술한 예들로 제한되지 않는 것으로 이해된다. 본 발명은 기법(700)에 의해 도시된 동작들의 순서와 회수로 제한되지 않는다.
일 실시예에서, 상술한 바와 같이, 블록(710)은 변환 요청 메시지가 프로세서로부터 수신할 수 있는 것이 도시된다. 일부 실시예에서, 상술한 바와 같이, 변환 요청 메시지는 가상 어드레스를 포함한다. 일 실시예에서, 상술한 바와 같이, 수신은 컴퓨터의 메모리에 의해 포함된 메모리 내 프로세서(processor-in-memory)로부터 변환 요청 메시지를 포함할 수 있다. 다른 실시예에서, 상술한 바와 같이, 수신은 컴퓨터의 메모리 외부의 메모리 관리 유닛으로부터 변환 요청 메시지의 수신을 포함할 수 있다.
일 실시예에서, 상술한 바와 같이, 블록(720)은 컴퓨터의 메모리 내 포함된 메모리 셀들의 액세스에 의해 가상 어드레스를 해당 물리 어드레스로 변환할 수 있는 것이 도시된다. 일부 실시예들에서, 변환은 컴퓨터의 메모리에 의해 저장된 페이지 테이블들을 통해 반복적으로 워킹하는 단계를 포함할 수 있다. 그러한 실시예에서, 상술한 바와 같이, 변환은 가상 어드레스가 페이지 테이블들에서 발견될 때, 페이지 테이블들로부터 물리 어드레스를 검색하여 획득하는 것을 포함할 수도 있다.
상술한 바와 같이, 블록(730)은 물리 어드레스가 보안 식별자에 연관되는지에 대한 여부가 결정될 수 있는 것을 도시한다. 그러한 실시예에서, 변환 요청 메시지는 보안 식별자를 포함할 수 있다.
상술한 바와 같이, 블록(740)은 변환 응답 메시지가 프로세서로 전송될 수 있는 것이 도시된다. 다양한 실시예들에서, 변환 응답 메시지는 가상 어드레스에 따른 물리 어드레스와 에러 메시지중 하나를 포함할 수 있다. 일부 실시예들에서, 상술한 바와 같이, 물리 어드레스가 보안 식별자와 연관되면, 물리 어드레스는 변환 응답 메시지 내 포함될 수 있다. 다양한 실시예들에서, 상술한 바와 같이, 물리 어드레스가 보안 식별자와 연관되지 않으면, 에러는 변환 응답 메시지 내에 포함될 수 있다.
도 8은 본 발명의 원리들에 따른 형태를 갖는 장치들(일예로, 반도체 장치들)을 포함할 수 있는 정보 프로세싱 시스템을 개략적으로 도시한 도면이다.
도 8를 참조하면, 정보 처리 시스템(800)은 본 발명의 원리들에 따라 구성된 하나 이상의 장치들을 포함할 수 있다. 다른 실시예에서, 정보 처리 시스템(800)은 본 발명의 원리들에 다른 하나 이상의 기법들을 사용하거나 실행할 수 있다.
다양한 실시예에서, 정보 처리 시스템(800)은 예를 들면, 랩톱(laptop), 데스크톱(desktop), 워크스테이션(workstation), 서버(server), 블레이드 서버(blade server), 휴대 정보 단말기(personal digital assistant), 스마트폰(smartphone), 태블릿(tablet), 및 다른 적합한 컴퓨터들 등, 또는 가상 머신(virtual machine) 또는 그것의 가상 컴퓨팅 장치와 같은 컴퓨팅 장치를 포함할 수 있다. 다양한 실시예들에서, 정보 처리 시스템(800)은 사용자(미도시)에 의해 사용될 수 있다.
본 발명에 따른 정보 처리 시스템(800)은 중앙 처리 장치(CPU: central processing unit), 로직, 또는 프로세서(810)를 더 포함할 수 있다. 일부 실시예들에서, 프로세서(810)는 하나 이상의 기능 유닛 블록들(FUBs: functional unit blocks) 또는 조합 로직 블록들(CLBs: combination logic blocks)(815)을 포함할 수 있다. 그러한 실시예에서, 조합 로직 블록은 다양한 불리언 논리 연산(Boolean logic operation)들(예를 들면, 부정곱(낸드)(NAND), 부정논리합(노어)(NOR), 부정(낫)(NOT), 배타적 논리합(XOR) 등), 안정화 논리 장치들(예를 들면, 플립-플롭(flip-flop)들, 래치(latch)들 등), 다른 논리 장치들, 또는 그것의 조합을 포함할 수 있다. 이러한 조합 로직 동작들은 원하는 결과를 수행하기 위해 입력 신호들을 처리하기 위해 간단하거나 복잡한 방식으로 구성될 수 있다. 동기화된 조합 로직 동작들의 몇몇 예들이 기술되는 동안, 본 발명이 제한되지 않고, 비동기 동작들 또는 그것의 혼합을 포함할 수 있는 것으로 이해된다. 일 실시예에서, 조합 로직 동작들은 복수의 상보형금속산화막반도체(CMOS: complementary metal oxide semiconductors) 트랜지스터들을 포함할 수 있다. 다양한 실시예들에서, 이러한 CMOS 트랜지스터들은 논리 동작들을 수행하는 게이트들로 배열될 수 있으나, 다른 기술들이 사용될 수 있고, 본 발명의 범위 내에 있다.
본 발명에 따른 정보 처리 시스템(800)은 휘발성 메모리(820)(예를 들면, 랜덤 액세스 메모리(RAM: Random Access Memory))를 더 포함할 수 있다. 본 발명에 따른 정보 처리 시스템(820)은 비휘발성 메모리(예를 들면, 하드 드라이브(hard drive), 광 메모리(optical memory), 낸드(NAND) 또는 플래시(Flash) 메모리)를 더 포함할 수 있다. 일부 실시예에서, 휘발성 메모리(820), 비휘발성 메모리(830), 또는 그것의 조합 또는 부분들 중 하나는 ‘저장 매체(storage medium)’로서 나타낼 수 있다. 다양한 실시예들에서, 휘발성 메모리(820) 및/또는 비휘발성 메모리(830)는 반영구적 또는 실질적으로 영구적인 형태의 데이터 저장을 위해 구성될 수 있다.
다양한 실시예들에서, 정보 처리 시스템(800)은 통신 네트워크의 일부일 수 있고, 통신 네트워크를 통해 통신하는 정보 처리 시스템(800)을 허용하기 위해 구성된 하나 이상의 네트워크 인터페이스들(840)을 포함할 수 있다. 와이파이(Wi-Fi) 프로토콜의 예들은 국제전기전자기술자협회(Institute of Electrical and Electronics Engineers, 이하 ‘IEEE’라 칭하기로 함) 802.11g, IEEE 802.11n 등으로 제한되는 것은 아니지만 포함할 수 있다. 셀룰러 프로토콜(cellular protocol)의 예들은 IEEE 802.16m(무선 거대 도시 통신망(MAN: Metropolitan Area Network) 어드밴스드(MAN Advanced)라고도 알려진), 롱 텀 에볼루션 어드밴스드(LTE(Long Term Evolution) Advanced), 이디지이(EDGE: Enhanced Data rates for GSM(Global System for Mobile Communications) Evolution), 진화형 고속 패킷 액세스(HSPA+: Evolved High-Speed Packet Access) 등으로 제한되는 것은 아니지만 포함할 수 있다. 유선 프로토콜의 예들은 IEEE 802.3(이더넷(Ethernet)이라고 알려진), 섬유 채널(Fibre channel), 전력선 통신(Power Line communication)(예를 들면, 홈플러그(HomePlug), IEEE 1901 등) 등으로 제한되는 것은 아니지만 포함할 수 있다. 상술한 것은 단지 몇몇 도시된 예들로서, 본 발명이 상술한 예들로 제한되지 않는 것으로 이해된다.
기재된 기술적 특징에 따른 정보 처리 시스템(800)은 사용자 인터페이스 유닛(850)(예를 들면, 디스플레이 어댑터(display adapter), 햅틱 인터페이스(haptic interface), 휴먼 인터페이스 장치(human interface device))을 더 포함할 수 있다. 다양한 실시예에서, 이러한 사용자 인터페이스 유닛(850)은 사용자로부터 입력 수신 및/또는 사용자로부터의 출력을 제공 중 하나를 위해 구성될 수 있다. 다른 종류의 장치들이 사용자와 원활환 상호 작용에 대한 제공을 위해 사용될 수 있고, 예를 들면, 사용자로 제공되는 피드백은 감각 피드백(sensory feedback)의 임의의 형태, 예를 들면, 시각 피드백(visual feedback), 청각 피드백(auditory feedback), 또는 촉각 피드백(tactile feedback)와 사용자로부터의 입력은 음향, 음성, 또는 촉각 입력을 포함하는 임의의 형태로 수신될 수 있다.
다양한 실시예들에서, 정보 처리 시스템(800)은 하나 이상의 다른 장치들 또는 하드웨어 컴포넌트들(860)(예를 들면, 디스플레이 또는 모니터, 키보드, 마우스, 카메라, 지문 인식기, 비디오 프로세서 등)을 포함할 수 있다. 상술한 것은 단지 몇몇 도시된 예들로서, 본 발명이 상술한 예들로 제한되지 않는 것으로 이해된다.
본 발명에 따른 정보 처리 시스템(800)은 하나 이상의 시스템 버스들(805)을 더 포함할 수 있다. 그러한 실시예에서, 시스템 버스(805)는 프로세서(801), 휘발성 메모리(820), 비휘발성 메모리(830), 네트워크 인터페이스(840), 사용자 인터페이스 유닛(850), 및 하나 이상의 하드웨어 컴포넌트들(860)을 통신에 관한 연결을 하도록 구성될 수 있다. 프로세서(810)에 의해 처리된 데이터 또는 비휘발성 메모리(830)의 외부로부터 입력된 데이터는 비휘발성 메모리(830) 또는 휘발성 메모리(820) 중 하나에 저장될 수 있다.
다양한 실시예에서, 정보 처리 시스템(800)은 하나 이상의 소프트웨어 컴포넌트들(870)을 포함하거나 실행할 수 있다. 일부 실시예들에서, 소프트웨어 컴포넌트들(870)은 운영 체제(OS: Operating System) 및/또는 어플리케이션을 포함할 수 있다. 일부 실시예에서, 운영체제는 어플리케이션으로 하나 이상의 서비스들을 제공하기 위해 구성될 수 있고, 어플리케이션과 정보 처리 시스템(800)의 다양한 하드웨어 컴포넌트들(예를 들면, 프로세서(810), 네트워크 인터페이스(840) 등) 사이의 중재자로서 관리 또는 작용할 수 있다. 그러한 실시예에서, 정보 처리 시스템(800)은 국부적으로(예를 들면, 비휘발성 메모리(830) 등의 내부에) 설치될 수 있는 하나 이상의 네이티브 어플리케이션들을 포함할 수 있고, 프로세서(810)에 의헤 직접 적으로 실행되고, 운영 체제와 직접 상호 작용하기 위해 구성될 수 있다. 그러한 실시예에서, 네이티브 어플리케이션들은 미리 컴파일된 기계 실행 코드(pre-compiled machine executable code)를 포함할 수 있다. 그러한 실시예에서, 네이티브 어플리케이션들은 스크립트 인터프리터(예를 들면, C 쉘(shell)(csh), 애플스크립트(ApplesScript), 자동핫키(AutoHotkey) 등) 또는 프로세서(810)에 의해 실행된 이후 실행가능 코드들 내 소스(source) 또는 객체(object) 코드의 변환을 위해 구성된 가상 실행 머신(VM: Virtual execution machine)(예를 들면, 자바 가상 머신(Java Virtual Machine), 마이크로소프트 공통 언어 런타임(Microsoft Common Language Runtime) 등)을 포함할 수 있다.
상술한 반도체 장치들은 다양한 패키징 기법을 사용하여 캡슐화(encapsulate)될 수 있다. 예를 들면, 본 발명의 원리들에 따라 구성된 반도체 장치들은 패키지 온 패키지(POP: package on package) 기법, 볼 그리드 어레이(BGAs: ball grid arrays) 기법, 칩 스케일 패키지(CSPs: chip scale packages) 기법, 플라스틱 리디드 캐리어(PLCC: plastic leaded chip carrier) 기법, 플라스틱 듀얼 인-라인 패키지(PDIP: plastic dual in-line package) 기법, 와플 패키지 내 다이(die in waffle pack) 기법, 웨이퍼 형상 내 다이(die in wafer form) 기법, 칩 온 보드(COB: chip on board) 기법, 세라믹 듀얼 인-라인 패키지(CERDIP: ceramic dual in-line package) 기법, 플라스틱 메트릭 쿼드 플랫 패키지(PMQFP: plastic metric quad flat package) 기법, 플라스틱 쿼드 플랫 패키지(PQFP: plastic quad flat package) 기법, 작은 아웃라인 패키지(SOIC: small outline package) 기법, 쉬링크 스몰 아웃라인 패키지(SSOP: shrink small outline package) 기법, 씬 스몰 아웃라인 패키지(TSOP: thin small outline package) 기법, 씬 쿼드 플랫 패키지(TQFP: thin quad flat package) 기법, 시스템 인 패키지(SIP: system in package) 기법, 멀티칩 패키지(MCP: multi-chip package) 기법, 웨이퍼 레벨 패브리케이티드 패키지(WFP: wafer-level fabricated package) 기법, 웨이퍼 레벨 프로세스된 스택 패키지(WSP: wafer-level processed stack package) 기법, 또는 해당 기술 분야에서 잘 알려진 다른 기법들 중 임의의 하나를 사용하여 캡슐화될 수 있다.
방법 단계들은 입력 데이터와 생성된 출력 상의 동작에 의한 기능들을 수행하기 위한 컴퓨터 프로그램을 실행하는 하나 이상의 프로그래머블 프로세서들에 의해 수행될 수 있다. 방법 스텝들은 특정 목적 로직 회로, 예를 들면, 필드 프로그래머블 게이터 어레이(FPGA: Field Programmable Gate Array) 또는 주문형 반도체(ASIC: Application Specific Integrated Circuit)로 구현될 수 있는 장치에 의해 수행될 수 있다.
다양한 실시예들에서, 컴퓨터 읽기 가능 매체는 명령어들을 포함할 수 있고, 그것이 실행될 때, 방법 단계들의 적어도 일부를 수행하기 위한 장치들을 야기한다. 일부 실시예들에서, 컴퓨터 읽기 가능 매체는 마그네틱 매체(magnetic medium), 광 매체(optical medium), 다른 매체, 또는 그것의 조합(예를 들면, 씨디-롬(CD-ROM), 하드 드라이브, 리드 온니 메모리, 플래쉬 드라이브 등)을 포함할 수 있다. 그러한 실시예에서, 컴퓨터 읽기 가능 매체는 실재하고, 제조의 비일시적으로 구현된 아티클이다.
본 발명의 원리는 예시적인 실시예들을 참조하여 기술될 수 있고, 해당 기술분야에서 이러한 기재된 개념들의 사상과 범위를 벗어나지 않도록 만들어질 수 있는 다양한 변경들과 수정들이 명백할 것이다. 그러므로, 그것은 상술한 실시예들은 도시된 것으로만 제한되지 않는 것으로 이해될 수 있다. 따라서, 다음의 청구범위와 그들의 균등물들의 가장 넓게 허용하는 해석에 의해 기재된 개념의 범위가 결정될 수 있고, 앞선 기술들에 의해 한정되거나 제한되지 않아야 한다. 그러므로, 첨부된 청구항들은 실시예의 범위 내에서 벗어나지 않는 그러한 모든 수정들과 변경들을 보장하기 위해 의도된 것으로 이해될 수 있다.
100: 시스템 102: 프로세서(CPU)
104: 컴퓨터의 메모리 112: 프로세서 코어
114: 변환 색인 버퍼(TLB) 116: 메모리 관리 유닛(MMU)
122, 122a, 122b: 메모리-내-프로세서(PIM)들
124: 메모리-내-변환(TIM)
138: 페이지 테이블들(페이지 디렉토리)
148: 메모리 셀들 152: 가상 어드레스
154: 물리 어드레스 156: 데이터
200: 장치(TIM) 202: 입력/출력(IO) 디코더/인코더
204: 페이지 테이블 워커 206: 보호 및 결함 핸들러
300: 장치(TIM) 302: 변환기
304: 페이지 테이블 캐시 306: 보호 및 결함 핸들러
400: 장치(TIM) 500: 시스템
504: 컴퓨터의 메모리 524: 메모리 내 변환(TIM)
600: 시스템 602: 메모리 어레이 다이
604: 로직 다이 622: 프로세서(PIM)
624: 변환기 638: 페이지 테이블들
648: 메모리 셀들 800: 정보 처리 시스템
810: 프로세서 및/또는 로직 820: 휘발성 메모리
830: 비휘발성 메모리 840: 네트워크 인터페이스
850: 사용자 인터페이스 유닛 860: 다른 하드웨어 장치들
870: 소프트웨어

Claims (10)

  1. 데이터와 페이지 테이블을 저장하고, 상기 페이지 테이블은 적어도 일부에서 가상 어드레스를 물리 어드레스로 맵하는 메모리 셀들;
    가상 어드레스를 포함하고, 상기 메모리 셀들에 의해 저장된 데이터의 일부를 이용하는 명령을 수행하기 위한 요청을 수신하고, 변환기로부터 상기 물리 어드레스를 요청하고, 상기 물리 어드레스를 이용하기 위한 명령어를 실행하는 적어도 하나의 메모리 내 프로세서; 및
    각 메모리 내 프로세서를 위해 상기 페이지 테이블의 액세스에 의해 상기 데이터의 부분에 연관된 가상 어드레스를 상기 데이터의 일부에 연관된 물리 어드레스로 변환하는 변환기를 포함하는 컴퓨터의 메모리.
  2. 제 1 항에 있어서,
    상기 변환기는 상기 컴퓨터의 메모리 외부의 프로세서로부터 전달된 제 2 변환 요청을 수신하고, 상기 제 2 변환 요청은 제 2 가상 어드레스를 포함하며, 상기 페이지 테이블의 액세스에 의해 상기 제 2 가상 어드레스를 제 2 물리 어드레스로 변환하고, 상기 프로세서로 상기 제 2 물리 어드레스를 전송하는 컴퓨터의 메모리.
  3. 제 1 항에 있어서,
    상기 컴퓨터의 메모리는 가상 어드레스를 포함하는 변환 요청 메시지를 수신하고, 가상 어드레스 또는 에러에 따른 물리 어드레스 중 하나를 포함하는 변환 응답 메시지를 전송하는 입력/출력 디코더/인코더를 포함하는 컴퓨터의 메모리.
  4. 제 1 항에 있어서,
    상기 변환기는 컴퓨터의 메모리로 외부의 컴포넌트의 지원없이 가상 어드레스를 물리 어드레스로 변환하는 컴퓨터의 메모리.
  5. 제 1 항에 있어서,
    데이터의 가상 어드레스를 물리 어드레스로 변환하는 페이지 테이블 워커를 포함하고,
    상기 페이지 테이블 워커는 가상 어드레스와 페이지 테이블 포인터를 수신하고,
    상기 페이지 테이블 워커는 상기 페이지 테이블 포인터를 통해 상기 페이지 테이블에 액세스하고, 상기 페이지 테이블 내 가상 어드레스에 대해 검색하고,
    상기 페이지 테이블 워커는 응답으로 물리 어드레스 또는 제 2 페이지 테이블 포인터 중 하나를 수신하는 컴퓨터의 메모리.
  6. 제 5 항에 있어서,
    명령어가 물리 어드레스에서 저장된 데이터의 액세스를 위해 허용되는지의 여부를 결정하는 보호 및 결함 핸들러를 더 포함하고,
    상기 보호 및 결함 핸들러는 물리 어드레스와 명령어에 연관된 보안 식별자를 수신하고, 상기 물리 어드레스가 상기 보안 식별자에 연관되었는지를 결정하고, 상기 보안 식별자가 물리 어드레스에 연관되어 있지 않으면, 보안 예외를 생성하는 컴퓨터의 메모리.
  7. 제 5 항에 있어서,
    가상 어드레스를 물리 어드레스로 맵하는 캐시를 더 포함하고,
    상기 변환기는
    상기 가상 어드레스가 상기 캐시 내 저장되었는지를 판단하고,
    상기 페이지 테이블 워커를 통해 상기 가상 어드레스가 상기 물리 어드레스로 변환되지 않으면, 상기 캐시를 통해 상기 가상 어드레스를 상기 물리 어드레스로 변환하고,
    상기 캐시 내 상기 가상 어드레스를 상기 물리 어드레스로의 매핑을 저장한 후에 상기 변환기는 상기 가상 어드레스를 상기 물리 어드레스로 변환하는 컴퓨터의 메모리.
  8. 제 1 항에 있어서,
    상기 변환기는 상기 명령어가 상기 물리 어드레스에서 저장된 데이터의 액세스 허용 여부의 결정없이 상기 물리 어드레스를 되돌리는 컴퓨터의 메모리.
  9. 제 1 항에 있어서,
    상기 번역기는 상기 가상 어드레스가 상기 가상 어드레스를 상기 물리 어드레스로의 변환하기 위해 발견될 때까지 상기 페이지 테이블을 통해 반복하여 워크하는 컴퓨터의 메모리.
  10. 제 1 항에 있어서,
    상기 번역기와 상기 프로세서를 포함하는 제 1 집적 회로 다이; 및
    상기 메모리 셀들을 포함하는 적어도 제 2 집적 회로 다이를 포함하고,
    상기 제 1 집적 회로 다이와 상기 제 2 집적 회로 다이는 다이들의 스택의 형성을 위해 연결되는 컴퓨터의 메모리.
KR1020150164960A 2014-11-24 2015-11-24 컴퓨터의 메모리 및 그것의 메모리 내 변환을 수행하는 방법 KR20160061899A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201462083887P 2014-11-24 2014-11-24
US62/083,887 2014-11-24
US14/813,111 US20160147667A1 (en) 2014-11-24 2015-07-29 Address translation in memory
US14/813,111 2015-07-29

Publications (1)

Publication Number Publication Date
KR20160061899A true KR20160061899A (ko) 2016-06-01

Family

ID=56010352

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150164960A KR20160061899A (ko) 2014-11-24 2015-11-24 컴퓨터의 메모리 및 그것의 메모리 내 변환을 수행하는 방법

Country Status (2)

Country Link
US (1) US20160147667A1 (ko)
KR (1) KR20160061899A (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180017376A (ko) * 2016-08-09 2018-02-21 고려대학교 산학협력단 별도의 가상 영역으로 관리되는 복수의 정보 저장 테이블을 가지는 메모리 장치 및 그의 제어 방법
KR20190123746A (ko) * 2017-02-22 2019-11-01 마이크론 테크놀로지, 인크. 메모리내 연산을 위한 장치 및 방법
KR20200003709A (ko) * 2018-07-02 2020-01-10 삼성전자주식회사 고-대역폭 메모리 신뢰성, 접근성 및 유용성(ras) 캐시 구조

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016154789A1 (zh) * 2015-03-27 2016-10-06 华为技术有限公司 数据处理方法、内存管理单元及内存控制设备
US9997232B2 (en) 2016-03-10 2018-06-12 Micron Technology, Inc. Processing in memory (PIM) capable memory device having sensing circuitry performing logic operations
US9922696B1 (en) 2016-10-28 2018-03-20 Samsung Electronics Co., Ltd. Circuits and micro-architecture for a DRAM-based processing unit
US10402340B2 (en) * 2017-02-21 2019-09-03 Micron Technology, Inc. Memory array page table walk
US10416927B2 (en) * 2017-08-31 2019-09-17 Micron Technology, Inc. Processing in memory
CN108089820A (zh) * 2017-12-19 2018-05-29 上海磁宇信息科技有限公司 一种混合使用mram和dram的存储装置
KR102665410B1 (ko) 2018-07-30 2024-05-13 삼성전자주식회사 메모리 장치의 내부 프로세싱 동작 방법
KR20200036461A (ko) * 2018-09-28 2020-04-07 삼성전자주식회사 메모리 디바이스들 사이의 직접 통신을 위한 메모리 시스템 및 메모리 디바이스
US11593156B2 (en) 2019-08-16 2023-02-28 Red Hat, Inc. Instruction offload to processor cores in attached memory
US11900161B2 (en) * 2020-03-24 2024-02-13 Advanced Micro Devices, Inc. Memory allocation for processing-in-memory operations
KR20210141156A (ko) * 2020-05-15 2021-11-23 삼성전자주식회사 페이지 장애에 기초하여 메모리 고장을 예견하고, 예견되는 메모리 고장을 관리하는 시스템의 운영 체계 핸들링
CN114238176B (zh) * 2021-12-14 2023-03-10 海光信息技术股份有限公司 处理器、用于处理器的地址翻译方法、电子设备
CN115617274A (zh) * 2022-10-27 2023-01-17 亿铸科技(杭州)有限责任公司 一种具备坏块管理功能的存内计算装置及操作方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6785790B1 (en) * 2002-05-29 2004-08-31 Advanced Micro Devices, Inc. Method and apparatus for storing and retrieving security attributes
US8984256B2 (en) * 2006-02-03 2015-03-17 Russell Fish Thread optimized multiprocessor architecture
JP5347024B2 (ja) * 2009-06-24 2013-11-20 パナソニック株式会社 メモリアクセス制御装置、集積回路、メモリアクセス制御方法及びデータ処理装置
US8551459B2 (en) * 2009-06-29 2013-10-08 L'oreal Composition comprising a polyol and a oil-soluble high carbon polar modified polymer
US20110041039A1 (en) * 2009-08-11 2011-02-17 Eliyahou Harari Controller and Method for Interfacing Between a Host Controller in a Host and a Flash Memory Device
US8335908B2 (en) * 2010-07-01 2012-12-18 Arm Limited Data processing apparatus for storing address translations
KR20130008300A (ko) * 2011-07-12 2013-01-22 삼성전자주식회사 오버 프로그램을 이용하여 소거 동작을 수행하는 플래시 메모리 장치 및 그 동작방법
US9495302B2 (en) * 2014-08-18 2016-11-15 Xilinx, Inc. Virtualization of memory for programmable logic

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180017376A (ko) * 2016-08-09 2018-02-21 고려대학교 산학협력단 별도의 가상 영역으로 관리되는 복수의 정보 저장 테이블을 가지는 메모리 장치 및 그의 제어 방법
KR20190123746A (ko) * 2017-02-22 2019-11-01 마이크론 테크놀로지, 인크. 메모리내 연산을 위한 장치 및 방법
KR20200003709A (ko) * 2018-07-02 2020-01-10 삼성전자주식회사 고-대역폭 메모리 신뢰성, 접근성 및 유용성(ras) 캐시 구조

Also Published As

Publication number Publication date
US20160147667A1 (en) 2016-05-26

Similar Documents

Publication Publication Date Title
KR20160061899A (ko) 컴퓨터의 메모리 및 그것의 메모리 내 변환을 수행하는 방법
KR102268722B1 (ko) 데이터 액세스 장치 및 그것의 동작 방법
US11016906B2 (en) GPU virtualisation
US9594521B2 (en) Scheduling of data migration
KR102201392B1 (ko) 데이터 액세스를 위한 장치 및 그것의 동작 방법
US10871983B2 (en) Process-based multi-key total memory encryption
US20200319913A1 (en) System, apparatus and method for accessing multiple address spaces via a virtualization device
KR102398604B1 (ko) 연쇄 프리 패칭을 위한 장치 및 그것의 동작 방법
US20150199276A1 (en) Pre-fetch confirmation queue
CN102789429A (zh) 支持页属性的虚拟地址至物理地址的转换
TW201717029A (zh) 對於可轉換記憶體的頁面的保護容器頁面與正規頁面類型表示的選擇性檢查之多頁面檢查提示
KR20170024529A (ko) 메모리 시스템에 데이터 스트림을 쓰기 위한 방법, 장치 및 시스템 온 칩
EP4057149A1 (en) A computer system and method using a first page table and a second page table
US10387302B2 (en) Managing database index by leveraging key-value solid state device
CN107003940B (zh) 用于在非统一存储器架构中提供改进的延迟的系统和方法
KR20210000271A (ko) 낮은 수준의 독점적 캐시 계층 구조에서의 프리페치
US20220269621A1 (en) Providing Copies of Input-Output Memory Management Unit Registers to Guest Operating Systems
EP3980885A1 (en) Guest operating system buffer and log access by an input-output memory management unit
US20200334058A1 (en) Domain Identifier and Device Identifier Translation by an Input-Output Memory Management Unit
CN114925002A (zh) 电子装置、电子设备和地址转换方法
KR20220054389A (ko) 프로세서 기반 디바이스에서의 페이지 테이블 엔트리에 대한 액세스 최적화
CN104932989B (zh) 数据到高速缓冲层次低延迟层级中的机会性高速缓冲注入
TWI650642B (zh) 用於機會式快取注入資料至快取階層之較低延遲層級的方法、設備及系統
KR20210005969A (ko) 데이터 액세스를 위한 장치 및 그것의 동작 방법
CN110928812A (zh) 电子设备、电子系统和存储器控制器