KR20150106144A - 메모리 스왑 오퍼레이션 제어 방법 및 이를 적용하는 데이터 처리 시스템 - Google Patents
메모리 스왑 오퍼레이션 제어 방법 및 이를 적용하는 데이터 처리 시스템 Download PDFInfo
- Publication number
- KR20150106144A KR20150106144A KR1020140028269A KR20140028269A KR20150106144A KR 20150106144 A KR20150106144 A KR 20150106144A KR 1020140028269 A KR1020140028269 A KR 1020140028269A KR 20140028269 A KR20140028269 A KR 20140028269A KR 20150106144 A KR20150106144 A KR 20150106144A
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- page
- swap
- processor
- page fault
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1666—Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
-
- 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
-
- 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/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- 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/1009—Address translation using page tables, e.g. page table structures
-
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
-
- 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/655—Same page detection
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
메모리 스왑 오퍼레이션 제어 방법 및 이를 적용하는 데이터 처리 시스템에 관하여 개시한다. 메모리 스왑 오퍼레이션 제어 방법은 호스트의 프로세서에서 페이지 폴트가 발생된 프로세스에 대한 정보를 제1저장 수단에 기입하는 단계, 상기 페이지 폴트가 발생된 페이지를 스왑 메모리로 인식된 메모리 장치로부터 호스트의 메인 메모리에 복사하는 단계 및, 상기 페이지 폴트가 발생된 페이지를 메인 메모리에 복사하는 단계를 마친 후에 상기 제1저장 수단에 저장된 프로세스에 대한 정보를 이용하여 상기 페이지 폴트가 발생된 프로세스 동작을 재개하는 단계를 포함한다.
Description
본 발명은 메모리 제어 방법 및 장치에 관한 것으로서, 자세하게는 메모리 스왑 오퍼레이션 제어 방법 및 이를 적용하는 데이터 처리 시스템에 관한 것이다.
일반적으로, 컴퓨터 시스템에서 새로운 페이지를 로드 할 때 메인 메모리에 미사용 영역이 없는 경우 메모리 스왑 동작을 수행할 수 있다. 이러한 메모리 스왑 동작은 저장 공간을 확보하기 위하여 메인 메모리에 로드 된 일부 페이지를 스왑 메모리로 지정된 저장 장치에 저장하는 오퍼레이션 및 컴퓨터 시스템에서 필요로 하는 새로운 페이지를 저장 장치로부터 읽어내어 메인 메모리에 로드하는 오퍼레이션을 수행한다. 이와 같은 메모리 스왑 동작 수행 속도가 늦어지면 컴퓨터 시스템의 성능을 저하시키는 결과를 초래할 수 있다.
본 발명의 목적은 메모리 스왑 동작 속도를 향상시키기 위한 메모리 스왑 오퍼레이션 제어 방법을 제공하는데 있다.
본 발명의 다른 목적은 메모리 스왑 동작 속도를 향상시키기 위한 데이터 처리 시스템을 제공하는데 있다.
본 발명의 기술적 사상의 일면에 따른 메모리 스왑 오퍼레이션 제어 방법은 호스트의 프로세서에서 페이지 폴트가 발생된 프로세스에 대한 정보를 제1저장 수단에 기입하는 단계, 상기 페이지 폴트가 발생된 페이지를 스왑 메모리로 인식된 메모리 장치로부터 호스트의 메인 메모리에 복사하는 단계 및, 상기 페이지 폴트가 발생된 페이지를 메인 메모리에 복사하는 단계를 마친 후에 상기 제1저장 수단에 저장된 프로세스에 대한 정보를 이용하여 상기 페이지 폴트가 발생된 프로세스 동작을 재개하는 단계를 포함한다.
본 발명의 실시 예에 따르면, 상기 제1저장 수단에 기입되는 프로세스에 대한 정보는 페이지 폴트가 발생된 프로세스 ID를 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 제1저장 수단에 저장되는 프로세스에 대한 정보는 상기 페이지 폴트가 발생된 프로세스 ID 및 상기 페이지 폴트가 발생된 페이지를 상기 스왑 메모리로 인식된 메모리 장치로부터 상기 메인 메모리에 복사하기 위한 리퀘스트 정보를 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 제1저장 수단은 상기 프로세서에 내장된 레지스터를 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 제1저장 수단에 기입하는 단계는 상기 호스트의 프로세서에서 페이지 폴트가 발생되는지를 판단하는 단계, 상기 페이지 폴트가 발생된 경우에 상기 페이지 폴트가 발생된 프로세스의 실행을 중단하는 단계 및, 상기 페이지 폴트에 의하여 중단된 프로세스에 대한 정보를 상기 제1저장 수단에 기입하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 메인 메모리에 복사하는 단계는 다이렉트 메모리 액세스에 기초하여 상기 스왑 메모리로 인식된 메모리 장치로부터 페이지 폴트가 발생된 페이지를 읽어내고, 상기 읽어낸 페이지 폴트가 발생된 페이지를 상기 메인 메모리에 기입할 수 있다.
본 발명의 실시 예에 따르면, 상기 메인 메모리에 복사하는 단계는 상기 메인 메모리에 상기 페이지 폴트가 발생된 페이지를 기입할 저장 공간이 남아 있는지 않은 경우에, 상기 메인 메모리에 저장되어 있는 적어도 하나의 페이지를 상기 스왑 메모리로 인식된 메모리 장치에 기입하고 나서 상기 페이지 폴트가 발생된 페이지를 다이렉트 메모리 액세스 오퍼레이션에 기초하여 상기 스왑 메모리로 인식된 메모리 장치로부터 읽어내어 상기 메인 메모리에 기입할 수 있다.
본 발명의 실시 예에 따르면, 상기 호스트의 프로세서는 상기 호스트에 접속된 적어도 하나의 메모리 장치를 오퍼레이팅 시스템에 의하여 스왑 메모리로 인식할 수 있다.
본 발명의 실시 예에 따르면, 상기 페이지 폴트가 발생된 프로세스 동작을 재개하는 단계는 상기 페이지 폴트가 발생된 페이지를 메인 메모리에 복사하는 동작이 완료될 때 상기 제1저장 수단에 저장된 프로세스가 지시하는 프로세스를 웨이크 업 처리할 수 있다.
발명의 기술적 사상의 다른 면에 따른 데이터 처리 시스템은 입력 정보에 기초한 데이터 처리를 수행하고, 페이지 폴트가 발생되는 경우에 스왑 애플리케이션 프로그램 인터페이스를 구동시키는 프로세서 및, 상기 프로세서와 데이터를 교환하는 메인 메모리를 포함하고, 상기 스왑 애플리케이션 프로그램 인터페이스는 페이지 폴트가 발생된 프로세스에 대한 정보를 제1저장 영역에 저장하는 제1오퍼레이션, 스왑 메모리로 인식되는 메모리 장치에 저장된 상기 페이지 폴트가 발생된 페이지를 다이렉트 메모리 액세스 프로세스에 따라서 메인 메모리에 복사하는 제2오퍼레이션 및 상기 제2오퍼레이션이 완료될 때 상기 제1저장 영역에 저장된 프로세스에 대한 정보를 이용하여 상기 페이지 폴트가 발생된 프로세스 동작을 재개하는 제3오퍼레이션을 순차적으로 수행하는 것을 특징으로 한다.
본 발명의 실시 예에 따르면, 상기 프로세스에 대한 정보는 프로세스 ID를 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 제1저장 영역은 상기 프로세서에 내장된 특정 레지스터 또는 상기 메인 메모리에 특정 영역에 할당될 수 있다.
본 발명의 실시 예에 따르면, 상기 스왑 메모리로 인식되는 메모리 장치는 상기 프로세서에 접속되는 휘발성 메모리 장치 및 비휘발성 메모리 장치 중 적어도 하나를 포함할 수 있다.
본 발명의 실시 예에 따르면, 상기 제3오퍼레이션은 상기 페이지 폴트가 발생된 페이지를 메인 메모리에 복사하는 동작이 완료될 때 오퍼레이팅 시스템에 의하여 상기 제1저장 영역에 저장된 프로세스가 지시하는 프로세스를 웨이크 업 처리할 수 있다.
본 발명의 실시 예에 따르면, 상기 프로세서에 접속되는 메모리 장치는 오퍼레이팅 시스템에 의하여 메모리 매핑 처리되어 스왑 메모리로서 동작할 수 있다.
본 발명에 따르면 호스트에서 스왑 데이터가 저장된 메모리 장치를 스토리지가 아닌 메모리로서 인식하여 메모리 스왑 처리를 수행함으로써, 스왑 동작 수행 속도를 향상시킬 수 있는 효과가 발생된다.
본 발명에 따르면, 페이지 폴트가 발생된 페이지를 다이렉트 메모리 액세스에 기초하여 스왑 메모리로 인식된 메모리 장치로부터 메인 메모리에 복사함으로써, 스왑 동작 처리 속도를 향상시킬 수 있는 효과가 발생된다. 즉, 스토리지 처리 루틴이 아닌 메모리 처리 루틴에 의한 다이렉트 메모리 액세스에 의하여 페이지 폴트가 발생된 페이지를 메인 메모리에 저장함으로써, 스왑 동작 처리 속도를 향상시킬 수 있다.
본 발명에 따르면, 메모리 스왑 처리 완료 후에 페이지 폴트가 발생되는 시점에 저장된 프로세스에 대한 정보를 이용하여 페이지 폴트가 발생된 프로세스를 바로 재개함으로써, 프로세서에서의 데이터 처리 속도를 향상시킬 수 있는 효과가 발생된다.
도 1a ~ 1c는 본 발명의 실시 예들에 따른 전자 장치의 블록 구성도이다.
도 2a ~ 2c는 본 발명의 다른 실시 예들에 따른 전자 장치의 블록 구성도이다.
도 3a ~ 3c는 본 발명의 또 다른 실시 예들에 따른 전자 장치의 블록 구성도이다.
도 4a ~ 4b는 본 발명의 또 다른 실시 예들에 따른 전자 장치의 블록 구성도이다.
도 5a ~ 5b는 본 발명의 또 다른 실시 예들에 따른 전자 장치의 블록 구성도이다.
도 6a는 도 1a, 2a 및 3a에 도시된 메인 메모리에 저장되는 프로그램들 및 데이터들을 예시적으로 보여주는 도면이다.
도 6b는 도 1b, 2b, 3b, 4a 및 5a에 도시된 메인 메모리에 저장되는 프로그램들 및 데이터들을 예시적으로 보여주는 도면이다.
도 6c는 도 1c, 2c, 3c, 4b 및 5b에 도시된 메인 메모리에 저장되는 프로그램들 및 데이터들을 예시적으로 보여주는 도면이다.
도 7은 본 발명의 일 실시 예에 따른 스왑 API_1에 기초한 메모리 스왑 오퍼레이션 실행 방법의 흐름도이다.
도 8은 본 발명의 다른 실시 예에 따른 스왑 API_2에 기초한 메모리 스왑 오퍼레이션 실행 방법의 흐름도이다.
도 9는 본 발명의 또 다른 실시 예에 따른 스왑 API_3에 기초한 메모리 스왑 오퍼레이션 실행 방법의 흐름도이다.
도 10은 본 발명의 실시 예들에 따른 Swap API_1~3에 기초한 메모리 스왑 오퍼레이션 실행 방법이 적용되는 데이터 처리 시스템의 구현 예를 나타내는 블록도이다.
도 11은 본 발명의 실시 예에 따른 메모리 스왑 오퍼레이션 제어 방법의 흐름도이다.
도 12는 본 발명의 다른 실시 예에 따른 메모리 스왑 오퍼레이션 제어 방법의 흐름도이다.
도 13은 본 발명의 또 다른 실시 예에 따른 메모리 스왑 오퍼레이션 제어 방법의 흐름도이다.
도 14는 본 발명의 또 다른 실시 예에 따른 메모리 스왑 오퍼레이션 제어 방법의 흐름도이다.
도 2a ~ 2c는 본 발명의 다른 실시 예들에 따른 전자 장치의 블록 구성도이다.
도 3a ~ 3c는 본 발명의 또 다른 실시 예들에 따른 전자 장치의 블록 구성도이다.
도 4a ~ 4b는 본 발명의 또 다른 실시 예들에 따른 전자 장치의 블록 구성도이다.
도 5a ~ 5b는 본 발명의 또 다른 실시 예들에 따른 전자 장치의 블록 구성도이다.
도 6a는 도 1a, 2a 및 3a에 도시된 메인 메모리에 저장되는 프로그램들 및 데이터들을 예시적으로 보여주는 도면이다.
도 6b는 도 1b, 2b, 3b, 4a 및 5a에 도시된 메인 메모리에 저장되는 프로그램들 및 데이터들을 예시적으로 보여주는 도면이다.
도 6c는 도 1c, 2c, 3c, 4b 및 5b에 도시된 메인 메모리에 저장되는 프로그램들 및 데이터들을 예시적으로 보여주는 도면이다.
도 7은 본 발명의 일 실시 예에 따른 스왑 API_1에 기초한 메모리 스왑 오퍼레이션 실행 방법의 흐름도이다.
도 8은 본 발명의 다른 실시 예에 따른 스왑 API_2에 기초한 메모리 스왑 오퍼레이션 실행 방법의 흐름도이다.
도 9는 본 발명의 또 다른 실시 예에 따른 스왑 API_3에 기초한 메모리 스왑 오퍼레이션 실행 방법의 흐름도이다.
도 10은 본 발명의 실시 예들에 따른 Swap API_1~3에 기초한 메모리 스왑 오퍼레이션 실행 방법이 적용되는 데이터 처리 시스템의 구현 예를 나타내는 블록도이다.
도 11은 본 발명의 실시 예에 따른 메모리 스왑 오퍼레이션 제어 방법의 흐름도이다.
도 12는 본 발명의 다른 실시 예에 따른 메모리 스왑 오퍼레이션 제어 방법의 흐름도이다.
도 13은 본 발명의 또 다른 실시 예에 따른 메모리 스왑 오퍼레이션 제어 방법의 흐름도이다.
도 14는 본 발명의 또 다른 실시 예에 따른 메모리 스왑 오퍼레이션 제어 방법의 흐름도이다.
이하, 첨부한 도면을 참조하여 본 발명의 실시 예에 대해 상세히 설명한다. 본 발명의 실시 예는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위하여 제공되는 것이다. 본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시 예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용한다. 첨부된 도면에 있어서, 구조물들의 치수는 본 발명의 명확성을 기하기 위하여 실제보다 확대하거나 축소하여 도시한 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 갖는다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
도 1 ~ 5는 본 발명의 실시 예들에 따른 다양한 전자 장치들의 블록 구성도를 보여준다.
도 1 ~ 5에 도시된 전자 장치들(100A ~ 100M)은 예로서 컴퓨터, 모바일 폰, 스마트 폰, PDA, PMP, MP3 플레이어, 카메라, 캠코더, 스마트카드 등과 같은 장치들을 포함할 수 있다. 그리고, 도 1 ~ 5에 도시된 메모리 시스템에 표시된 메모리는 메모리 장치와 동등한 의미로 사용된다.
도 1a ~ 1c는 본 발명의 실시 예들에 따른 전자 장치의 블록 구성도이다.
우선, 도 1a를 참조하여 본 발명의 실시 예에 따른 전자 장치(100A)에 대하여 설명하기로 한다.
도 1a에 도시된 바와 같이, 전자 장치(100A)는 호스트(110A) 및 메모리 시스템(120A)을 포함한다.
호스트(110A)는 프로세서(111A) 및 메인 메모리(112A)를 포함한다.
프로세서(111A)는 특정 계산들 또는 태스크들을 처리하는 애플리케이션들을 수행한다. 예로서, 프로세서(111A)는 마이크로프로세서 또는 중앙 처리 장치(Central Processing Unit; CPU)가 될 수 있다.
프로세서(111A)는 메인 메모리(112A)와 전기적으로 연결되어 있다. 프로세서(111A)는 어드레스 버스, 제어 버스 및/또는 데이터 버스를 포함하는 버스(113)를 통하여 메인 메모리(112A)에 연결될 수 있다.
프로세서(111A)에는 페이지 폴트(page fault)가 발생된 프로세스에 대한 정보를 저장하는 제1저장 수단(111-1)이 포함될 수 있다. 예로서, 제1저장 수단(111-1)에 저장되는 정보는 페이지 폴트가 발생된 프로세스 ID가 포함될 수 있다. 다른 예로서, 제1저장 수단(111-1)에 저장되는 정보는 페이지 폴트가 발생된 프로세스 ID 및 페이지 폴트가 발생된 페이지를 메모리 시스템(120A)의 스토리지인 휘발성 메모리(122A)로부터 읽어내어 메인 메모리(112A)에 저장하기 위한 리퀘스트 정보가 포함될 수 있다. 예로서, 페이지 폴트가 기입되는 저장 영역을 제1저장 영역으로 정의할 수 있다.
예로서, 제1저장 수단(111-1)은 레지스터(REG1)로 구현할 수 있다. 다른 예로서, 제1저장 수단(111-1)은 프로세서(111A) 외부에 배치할 수도 있다. 또 다른 예로서, 페이지 폴트(page fault)가 발생된 프로세스에 대한 정보가 저장되는 제1저장 영역을 제1저장 수단(111-1) 대신에 메인 메모리(112A)의 특정 영역에 할당할 수도 있다.
메인 메모리(112A)에는 본 발명의 실시 예에 따른 메모리 스왑 오퍼레이션 동작을 수행하기 위한 프로그램인 Swap API_1이 저장되어 있다. 메인 메모리(112A)는 예로서, DRAM(Dynamic Random Access Memory) 또는 SRAM(Static Random Access Memory)로 구현할 수 있다.
메모리 시스템(120A)은 컨트롤러(121A) 및 휘발성 메모리(VM; 122A)를 포함한다.
메모리 시스템(120A)의 컨트롤러(121A)는 유선 또는 무선 인터페이스(130)를 통하여 호스트(110A)의 프로세서(111A)로부터 정보를 수신하거나 프로세서(111A)로 정보를 전송할 수 있다.
컨트롤러(121A)는 휘발성 메모리(122A)와 전기적으로 연결되어 있다. 컨트롤러(121A)는 어드레스 버스, 제어 버스 및/또는 데이터 버스를 포함하는 버스(124)를 통하여 휘발성 메모리(122A)에 연결될 수 있다.
휘발성 메모리(122A)는 호스트(110A)의 프로세서(111A)에서 스토리지(storage)로서 인식되며, 전원 공급이 차단되면 저장된 데이터가 소실된다. 휘발성 메모리(122A)에는 스왑(swap) 데이터가 저장될 수 있다. 예로서, 휘발성 메모리(122A)는 DRAM(Dynamic Random Access Memory) 또는 SRAM(Static Random Access Memory)로 구현할 수 있다.
컨트롤러(121A)는 호스트(110A)로부터 수신된 커맨드에 따라서 호스트(110A)로부터 전송된 데이터를 휘발성 메모리(122A)에 쓰거나 휘발성 메모리(122A)로부터 데이터를 읽어내어 호스트(110A)로 전송하는 오퍼레이션을 수행할 수 있다.
전자 장치(100A)는 제한된 메인 메모리(112A) 용량으로 대규모 소프트웨어의 실행을 가능하게 하는 가상 메모리 시스템(Virtual Memory System)으로 구현될 수 있다. 가상 메모리 시스템은 실제 소프트웨어의 크기에 비하여 메인 메모리(112A)의 용량이 크기 부족한 것을 해결하기 위하여 개발되었다. 모든 태스크의 주소 공간을 메인 메모리(112A)에 로딩하지 않고, 현재 태스크의 수행에 꼭 필요한 주소 공간 영역만을 메인 메모리(112A)에 저장한다. 나머지 주소 공간 영역은 보조 기억 장치인 메모리 시스템(120A)에 저장한다.
그러면, 전자 장치(100A)에서 수행되는 메모리 스왑 오퍼레이션에 대하여 설명하기로 한다.
프로세서(111A)는 페이지 폴트가 발생되는 경우에 메인 메모리(112A)에 저장되어 있는 Swap API_1을 구동시킨다. 페이지 폴트는 애플리케이션 프로세스를 수행하기 위하여 읽고자 하는 페이지가 메인 메모리(112A)에 저장되어 있지 않는 경우에 발생된다.
페이지 폴트가 발생되면 Swap API_1에 의하여 아래의 스텝 1a~ 3a를 수행한다.
[스텝 1a]
페이지 폴트가 발생된 프로세스에 대한 정보를 제1저장 수단(111-1)에 기입한다. 예로서, 페이지 폴트가 발생된 프로세스 ID를 제1저장 수단(111-1)에 기입할 수 있다. 다른 예로서, 페이지 폴트가 발생된 프로세스 ID 및 페이지 폴트가 발생된 페이지를 메모리 시스템(120A)의 스토리지인 휘발성 메모리(122A)로부터 메인 메모리(112A)에 복사하기 위한 리퀘스트(request) 정보를 제1저장 수단(111-1)에 기입할 수 있다.
[스텝 2a]
스토리지 액세스 프로세스에 기초하여 페이지 폴트가 발생된 페이지를 스토리지로 인식된 휘발성 메모리(122A)로부터 메인 메모리(112A)에 복사하는 오퍼레이션을 수행한다.
[스텝 3a]
스텝 2a를 마치고 나서, 프로세서(111A)는 제1저장 수단(111-1)에 저장된 프로세스 ID가 지시하는 프로세스 동작을 재개한다. 예로서, 스텝 2a에 따라서 페이지 폴트가 발생된 페이지가 메인 메모리(112A)에 로딩되는 동작이 완료될 때, 프로세서(111A)는 제1저장 수단(111-1)에 저장된 프로세스 ID가 지시하는 프로세스를 웨이크 업(wake up) 처리할 수 있다.
위에서 설명한 바와 같이, Swap API_1이 실행될 때 페이지 폴트가 발생된 페이지가 메인 메모리(112A)에 로딩되면, 프로세서(111A)는 페이지 폴트가 발생되어 슬립(sleep) 상태에 있는 프로세스를 바로 재개할 수 있게 된다.
다음으로, 도 1b를 참조하여 본 발명의 실시 예에 따른 전자 장치(100B)에 대하여 설명하기로 한다.
도 1b에 도시된 바와 같이, 전자 장치(100B)는 호스트(110B) 및 메모리 시스템(120B)을 포함한다.
호스트(110B)는 프로세서(111B) 및 메인 메모리(112B)를 포함한다.
프로세서(111B)는 특정 계산들 또는 태스크들을 처리하는 애플리케이션들을 수행한다. 예로서, 프로세서(111B)는 마이크로프로세서 또는 중앙 처리 장치(Central Processing Unit; CPU)가 될 수 있다.
프로세서(111B)는 메인 메모리(112B)와 전기적으로 연결되어 있다. 프로세서(111B)는 어드레스 버스, 제어 버스 및/또는 데이터 버스를 포함하는 버스(113)를 통하여 메인 메모리(112B)에 연결될 수 있다.
메인 메모리(112B)에는 본 발명의 실시 예에 따른 메모리 스왑 오퍼레이션 동작을 수행하기 위한 프로그램인 Swap API_2가 저장되어 있다. 메인 메모리(112B)는 예로서, DRAM(Dynamic Random Access Memory) 또는 SRAM(Static Random Access Memory)로 구현할 수 있다.
메모리 시스템(120B)은 컨트롤러(121B) 및 휘발성 메모리(VM; 122B)를 포함한다.
메모리 시스템(120B)의 컨트롤러(121B)는 유선 또는 무선 인터페이스(130)를 통하여 호스트(110B)의 프로세서(111B)로부터 정보를 수신하거나 프로세서(111B)로 정보를 전송할 수 있다.
컨트롤러(121B)는 휘발성 메모리(122B)와 전기적으로 연결되어 있다. 컨트롤러(121B)는 어드레스 버스, 제어 버스 및/또는 데이터 버스를 포함하는 버스(124)를 통하여 휘발성 메모리(122B)에 연결될 수 있다.
휘발성 메모리(122B)는 호스트(110A)의 프로세서(111B)에서 스왑 메모리(swap memory)로서 인식된다. 휘발성 메모리(122B)에는 스왑(swap) 데이터가 저장될 수 있다. 예로서, 휘발성 메모리(122B)는 DRAM(Dynamic Random Access Memory) 또는 SRAM(Static Random Access Memory)로 구현할 수 있다.
호스트(110B)에 메모리 시스템(120B)이 접속되면, 호스트(110B)의 프로세서(111B)는 메모리 시스템(120B)의 휘발성 메모리(122B)를 스왑 메모리로 인식하여 메모리 맵(memory map)에 휘발성 메모리(122B)를 스왑 메모리로 등록할 수 있다.
컨트롤러(121B)는 호스트(110B)로부터 수신된 커맨드에 따라서 호스트(110B)로부터 전송된 데이터를 휘발성 메모리(122B)에 쓰거나 휘발성 메모리(122B)로부터 데이터를 읽어내어 호스트(110B)로 전송하는 오퍼레이션을 수행할 수 있다.
전자 장치(100B)는 제한된 메인 메모리(112B) 용량으로 대규모 소프트웨어의 실행을 가능하게 하는 가상 메모리 시스템(Virtual Memory System)으로 구현될 수 있다.
그러면, 전자 장치(100B)에서 수행되는 메모리 스왑 오퍼레이션에 대하여 설명하기로 한다.
프로세서(111B)는 페이지 폴트가 발생되는 경우에 메인 메모리(112B)에 저장되어 있는 Swap API_2를 구동시킨다. 페이지 폴트는 프로세서(111B)는 애플리케이션 프로세스를 수행하기 위하여 읽고자 하는 페이지가 메인 메모리(112B)에 저장되어 있지 않는 경우에 발생된다.
페이지 폴트가 발생되면 Swap API_2에 의하여 아래의 스텝 1b~ 2b를 수행한다.
[스텝 1b]
다이렉트 메모리 액세스(DMA)에 기초하여 스왑 메모리로 인식된 휘발성 메모리(122B)에 저장된 페이지 폴트가 발생된 페이지를 메인 메모리(112B)에 복사하는 오퍼레이션을 수행한다. 프로세서(111B)는 메모리 시스템(100B)의 휘발성 메모리(122B)를 스토리지가 아닌 메모리로서 인식한다. 이에 따라서, 다이렉트 메모리 액세스(DMA)에 기초하여 스왑 메모리로 인식된 휘발성 메모리(122B)로부터 페이지 폴트가 발생된 페이지를 읽어내어 메인 메모리(112B)에 기입하는 오퍼레이션을 수행한다. 이로 인하여 페이지 폴트가 발생되는 경우에 다이렉트 메모리 액세스(DMA)에 의하여 스왑 메모리에 대한 액세스를 선점할 수 있게 된다.
[스텝 2b]
스텝 1b를 마치고 나서, 프로세서(111B)는 페이지 폴트가 발생된 프로세스의 동작 재개를 준비한다. 예로서, 스텝 1b에 따라서 페이지 폴트가 발생된 페이지가 메인 메모리(112A)에 저장된 후에 프로세서(111B)는 슬립(sleep)이 발생된 프로세스들은 초기 설정된 규칙에 따른 순서에 기초하여 웨이크 업(wake up) 처리를 기다린다.
위에서 설명한 바와 같이, Swap API_2가 실행될 때 다이렉트 메모리 액세스(DMA)에 의하여 스왑 메모리에 대한 액세스를 선점할 수 있게 되어 프로세스 속도를 향상시킬 수 있게 된다.
다음으로, 도 1c를 참조하여 본 발명의 실시 예에 따른 전자 장치(100C)에 대하여 설명하기로 한다.
도 1c에 도시된 바와 같이, 전자 장치(100C)는 호스트(110C) 및 메모리 시스템(120B)을 포함한다.
호스트(110C)는 프로세서(111C) 및 메인 메모리(112C)를 포함한다.
프로세서(111C)는 특정 계산들 또는 태스크들을 처리하는 애플리케이션들을 수행한다. 예로서, 프로세서(111C)는 마이크로프로세서 또는 중앙 처리 장치(Central Processing Unit; CPU)가 될 수 있다.
프로세서(111C)는 메인 메모리(112C)와 전기적으로 연결되어 있다. 프로세서(111C)는 어드레스 버스, 제어 버스 및/또는 데이터 버스를 포함하는 버스(113)를 통하여 메인 메모리(112C)에 연결될 수 있다.
프로세서(111C)에는 페이지 폴트(page fault)가 발생된 프로세스에 대한 정보를 저장하는 제1저장 수단(111-1)이 포함될 수 있다. 예로서, 제1저장 수단(111-1)에 저장되는 정보는 페이지 폴트가 발생된 프로세스 ID가 포함될 수 있다. 다른 예로서, 제1저장 수단(111-1)에 저장되는 정보는 페이지 폴트가 발생된 프로세스 ID 및 페이지 폴트가 발생된 페이지를 메모리 시스템(120B)의 스왑 메모리로 인식된 휘발성 메모리(122B)로부터 읽어내어 메인 메모리(112C)에 저장하기 위한 리퀘스트 정보가 포함될 수 있다. 제1저장 수단(111-1)에 대해서는 도 1a에서 상세히 설명하였으므로, 중복적인 설명은 피하기로 한다.
메인 메모리(112C)에는 본 발명의 실시 예에 따른 메모리 스왑 오퍼레이션 동작을 수행하기 위한 프로그램인 Swap API_3이 저장되어 있다. 메인 메모리(112C)는 예로서, DRAM(Dynamic Random Access Memory) 또는 SRAM(Static Random Access Memory)로 구현할 수 있다.
메모리 시스템(120B)은 컨트롤러(121B) 및 휘발성 메모리(VM; 122B)를 포함한다. 메모리 시스템(120B)에 대해서는 도 1b에서 설명하였으므로, 중복된 설명은 피하기로 한다.
호스트(110C)에 메모리 시스템(120B)이 접속되면, 호스트(110C)의 프로세서(111C)는 메모리 시스템(120B)의 휘발성 메모리(122B)를 스왑 메모리로 인식하여 메모리 맵(memory map)에 휘발성 메모리(122B)를 스왑 메모리로 등록할 수 있다.
컨트롤러(121B)는 호스트(110C)로부터 수신된 커맨드에 따라서 호스트(110C)로부터 전송된 데이터를 휘발성 메모리(122B)에 쓰거나 휘발성 메모리(122B)로부터 데이터를 읽어내어 호스트(110C)로 전송하는 오퍼레이션을 수행할 수 있다.
전자 장치(100C)는 제한된 메인 메모리(112C) 용량으로 대규모 소프트웨어의 실행을 가능하게 하는 가상 메모리 시스템(Virtual Memory System)으로 구현될 수 있다.
그러면, 전자 장치(100C)에서 수행되는 메모리 스왑 오퍼레이션에 대하여 설명하기로 한다.
프로세서(111C)는 페이지 폴트가 발생되는 경우에 메인 메모리(112C)에 저장되어 있는 Swap API_3을 구동시킨다. 페이지 폴트는 프로세서(111C)는 애플리케이션 프로세스를 수행하기 위하여 읽고자 하는 페이지가 메인 메모리(112C)에 저장되어 있지 않는 경우에 발생된다.
페이지 폴트가 발생되면 Swap API_3에 의하여 아래의 스텝 1c~ 3c를 수행한다.
[스텝 1c]
페이지 폴트가 발생된 프로세스에 대한 정보를 제1저장 수단(111-1)에 기입한다. 예로서, 페이지 폴트가 발생된 프로세스 ID를 제1저장 수단(111-1)에 기입할 수 있다. 다른 예로서, 페이지 폴트가 발생된 프로세스 ID 및 페이지 폴트가 발생된 페이지를 스왑 메모리로 인식된 메모리 시스템(120B)의 휘발성 메모리(122B)로부터 메인 메모리(112C)에 복사하기 위한 리퀘스트 정보를 제1저장 수단(111-1)에 기입할 수 있다.
[스텝 2c]
다이렉트 메모리 액세스(DMA)에 기초하여 스왑 메모리로 인식된 휘발성 메모리(122B)에 저장된 페이지 폴트가 발생된 페이지를 메인 메모리(112C)에 복사하는 오퍼레이션을 수행한다. 다시 말해, 프로세서(111C)는 메모리 시스템(120B)의 휘발성 메모리(122B)를 스토리지가 아닌 메모리로서 인식한다. 이에 따라서, 다이렉트 메모리 액세스(DMA)에 기초하여 스왑 메모리로 인식된 휘발성 메모리(122B)로부터 페이지 폴트가 발생된 페이지를 읽어내어 메인 메모리(112C)에 기입하는 오퍼레이션을 수행한다. 이로 인하여 페이지 폴트가 발생되는 경우에 다이렉트 메모리 액세스(DMA)에 의하여 스왑 메모리에 대한 액세스를 선점할 수 있게 된다.
[스텝 3c]
스텝 2c를 마치고 나서, 프로세서(111C)는 제1저장 수단(111-1)에 저장된 프로세스 ID가 지시하는 프로세스 동작을 재개한다. 예로서, 스텝 2c를 마치고 나서, 프로세서(111C)는 제1저장 수단(111-1)에 저장된 프로세스 ID가 지시하는 프로세스를 웨이크 업 처리하는 동작을 수행한다. 이에 따라서, 페이지 폴트가 발생되어 중단된 프로세스가 재개된다.
위에서 설명한 바와 같이, Swap API_3이 실행될 때 다이렉트 메모리 액세스(DMA)에 의하여 스왑 메모리에 대한 액세스를 선점할 수 있다. 또한 페이지 폴트가 발생된 페이지가 메인 메모리(112C)에 로딩된 후에 프로세서(111C)는 페이지 폴트가 발생되어 슬립(sleep) 상태에 있는 프로세스를 바로 재개할 수 있게 된다.
이로 인하여, 페이지 폴트가 발생될 때 Swap API_3을 적용하면 프로세스 실행 시간을 Swap API_1 및 Swap API_2에 비하여 단축시킬 수 있게 된다.
도 2a ~ 2c는 본 발명의 다른 실시 예들에 따른 전자 장치의 블록 구성도이다.
우선, 도 2a를 참조하여 본 발명의 실시 예에 따른 전자 장치(100D)에 대하여 설명하기로 한다.
도 2a에 도시된 바와 같이, 전자 장치(100D)는 호스트(110A) 및 메모리 시스템(120C)을 포함한다.
전자 장치(100D)의 호스트(110A) 구성은 도 1a에 도시된 전자 장치(100A)의 호스트(110A) 구성과 동일하므로, 중복적인 설명은 피하기로 한다.
메모리 시스템(120C)은 컨트롤러(121C) 및 비휘발성 메모리(NVM; 122C)를 포함한다.
메모리 시스템(120C)의 컨트롤러(121C)는 유선 또는 무선 인터페이스(130)를 통하여 호스트(110A)의 프로세서(111A)로부터 정보를 수신하거나 프로세서(111A)로 정보를 전송할 수 있다.
컨트롤러(121C)는 비휘발성 메모리(122C)와 전기적으로 연결되어 있다. 컨트롤러(121C)는 어드레스 버스, 제어 버스 및/또는 데이터 버스를 포함하는 버스(124)를 통하여 비휘발성 메모리(122C)에 연결될 수 있다.
비휘발성 메모리(122C)는 호스트(110A)의 프로세서(111A)에서 스토리지(storage)로서 인식되며, 전원 공급이 차단되더라도 저장된 데이터가 소실되지 않는다. 비휘발성 메모리(122C)에는 스왑(swap) 데이터가 저장될 수 있다. 예로서, 비휘발성 메모리(122C)는 플래시 메모리, PRAM(Phase change RAM), FRAM(Ferroelectric RAM), MRAM(Magnetic RAM) 등으로 구성될 수 있다.
컨트롤러(121C)는 호스트(110A)로부터 수신된 커맨드에 따라서 호스트(110A)로부터 전송된 데이터를 비휘발성 메모리(122C)에 쓰거나 비휘발성 메모리(122C)로부터 데이터를 읽어내어 호스트(110A)로 전송하는 오퍼레이션을 수행할 수 있다.
그러면, 전자 장치(100D)에서 수행되는 메모리 스왑 오퍼레이션에 대하여 설명하기로 한다.
프로세서(111A)는 페이지 폴트가 발생되는 경우에 메인 메모리(112A)에 저장되어 있는 Swap API_1을 구동시킨다. 이에 따라서, 페이지 폴트가 발생되면 Swap API_1에 의하여 아래의 스텝 1d~ 3d를 수행한다.
[스텝 1d]
프로세서(111A)는 페이지 폴트가 발생된 프로세스에 대한 정보를 제1저장 수단(111-1)에 기입한다. 예로서, 페이지 폴트가 발생된 프로세스 ID를 제1저장 수단(111-1)에 기입할 수 있다. 다른 예로서, 페이지 폴트가 발생된 프로세스 ID 및 페이지 폴트가 발생된 페이지를 메모리 시스템(120C)의 스토리지인 비휘발성 메모리(122C)로부터 메인 메모리(112C)에 복사하기 위한 리퀘스트 정보를 제1저장 수단(111-1)에 기입할 수 있다.
[스텝 2d]
전자 장치(100D)는 스토리지 액세스 프로세스에 기초하여 페이지 폴트가 발생된 페이지를 스토리지로 인식된 비휘발성 메모리(122C)로부터 메인 메모리(112C)에 복사하는 오퍼레이션을 수행한다.
[스텝 3d]
스텝 2d를 마치고 나서, 프로세서(111A)는 제1저장 수단(111-1)에 저장된 프로세스 ID가 지시하는 프로세스 동작을 재개한다. 예로서, 스텝 2d에 따라서 페이지 폴트가 발생된 페이지가 메인 메모리(112C)에 로딩되는 동작이 완료될 때, 프로세서(111A)는 제1저장 수단(111-1)에 저장된 프로세스 ID가 지시하는 프로세스를 웨이크 업(wake up) 처리할 수 있다.
다음으로, 도 2b를 참조하여 본 발명의 실시 예에 따른 전자 장치(100E)에 대하여 설명하기로 한다.
도 2b에 도시된 바와 같이, 전자 장치(100E)는 호스트(110B) 및 메모리 시스템(120D)을 포함한다.
전자 장치(100E)의 호스트(110B) 구성은 도 1b에 도시된 전자 장치(100B)의 호스트(110B) 구성과 동일하므로, 중복적인 설명은 피하기로 한다.
메모리 시스템(120D)은 컨트롤러(121D) 및 비휘발성 메모리(NVM; 122D)를 포함한다.
메모리 시스템(120D)의 컨트롤러(121D)는 유선 또는 무선 인터페이스(130)를 통하여 호스트(110B)의 프로세서(111B)로부터 정보를 수신하거나 프로세서(111B)로 정보를 전송할 수 있다.
컨트롤러(121D)는 비휘발성 메모리(122D)와 전기적으로 연결되어 있다. 컨트롤러(121D)는 어드레스 버스, 제어 버스 및/또는 데이터 버스를 포함하는 버스(124)를 통하여 비휘발성 메모리(122D)에 연결될 수 있다.
비휘발성 메모리(122D)는 호스트(110B)의 프로세서(111B)에서 스왑 메모리(swap memory)로서 인식된다. 예로서, 비휘발성 메모리(122D)는 플래시 메모리, PRAM(Phase change RAM), FRAM(Ferroelectric RAM), MRAM(Magnetic RAM) 등으로 구성될 수 있다.
호스트(110B)에 메모리 시스템(120D)이 접속되면, 호스트(110B)의 프로세서(111B)는 메모리 시스템(120D)의 비휘발성 메모리(122D)를 스왑 메모리로 인식하여 메모리 맵(memory map)에 비휘발성 메모리(122D)를 스왑 메모리로 등록할 수 있다.
컨트롤러(121D)는 호스트(110B)로부터 수신된 커맨드에 따라서 호스트(110B)로부터 전송된 데이터를 비휘발성 메모리(122D)에 쓰거나 비휘발성 메모리(122D)로부터 데이터를 읽어내어 호스트(110B)로 전송하는 오퍼레이션을 수행할 수 있다.
그러면, 전자 장치(100E)에서 수행되는 메모리 스왑 오퍼레이션에 대하여 설명하기로 한다.
프로세서(111B)는 페이지 폴트가 발생되는 경우에 메인 메모리(112B)에 저장되어 있는 Swap API_2를 구동시킨다. 이에 따라서, 페이지 폴트가 발생되면 Swap API_2에 의하여 아래의 스텝 1e~ 2e를 수행한다.
[스텝 1e]
다이렉트 메모리 액세스(DMA)에 기초하여 스왑 메모리로 인식된 비휘발성 메모리(122D)에 저장된 페이지 폴트가 발생된 페이지를 메인 메모리(112B)에 복사하는 오퍼레이션을 수행한다. 다시 말해, 프로세서(111B)는 메모리 시스템(120D)의 비휘발성 메모리(122D)를 스토리지가 아닌 메모리로서 인식한다. 이에 따라서, 다이렉트 메모리 액세스(DMA)에 기초하여 스왑 메모리로 인식된 휘발성 메모리(122D)로부터 페이지 폴트가 발생된 페이지를 읽어내어 메인 메모리(112B)에 기입하는 오퍼레이션을 수행한다.
[스텝 2e]
스텝 1e를 마치고 나서, 프로세서(111B)는 페이지 폴트가 발생된 프로세스의 동작 재개를 준비한다. 예로서, 스텝 1b에 따라서 페이지 폴트가 발생된 페이지가 메인 메모리(112B)에 저장된 후에 프로세서(111B)는 슬립(sleep)이 발생된 프로세스들은 초기 설정된 규칙에 따른 순서에 기초하여 웨이크 업(wake up) 처리를 기다린다.
다음으로, 도 2c를 참조하여 본 발명의 실시 예에 따른 전자 장치(100C)에 대하여 설명하기로 한다.
도 2c에 도시된 바와 같이, 전자 장치(100F)는 호스트(110C) 및 메모리 시스템(120D)을 포함한다.
전자 장치(100F)의 호스트(110C) 구성은 도 1c에 도시된 전자 장치(100C)의 호스트(110C) 구성과 동일하고, 전자 장치(100F)의 메모리 시스템(120D) 구성은 도 2b의 메모리 시스템(120D) 구성과 동일하므로, 중복적인 설명은 피하기로 한다.
그러면, 전자 장치(100F)에서 수행되는 메모리 스왑 오퍼레이션에 대하여 설명하기로 한다.
프로세서(111C)는 페이지 폴트가 발생되는 경우에 메인 메모리(112C)에 저장되어 있는 Swap API_3을 구동시킨다. 이에 따라서, 페이지 폴트가 발생되면 Swap API_3에 의하여 아래의 스텝 1f~ 3f를 수행한다.
[스텝 1f]
페이지 폴트가 발생된 프로세스에 대한 정보를 제1저장 수단(111-1)에 기입한다. 예로서, 페이지 폴트가 발생된 프로세스 ID를 제1저장 수단(111-1)에 기입할 수 있다. 다른 예로서, 페이지 폴트가 발생된 프로세스 ID 및 페이지 폴트가 발생된 페이지를 스왑 메모리로 인식된 메모리 시스템(120D)의 비휘발성 메모리(122D)로부터 메인 메모리(112C)에 복사하기 위한 리퀘스트 정보를 제1저장 수단(111-1)에 기입할 수 있다.
[스텝 2f]
다이렉트 메모리 액세스(DMA)에 기초하여 스왑 메모리로 인식된 비휘발성 메모리(122D)에 저장된 페이지 폴트가 발생된 페이지를 메인 메모리(112C)에 복사하는 오퍼레이션을 수행한다. 다시 말해, 프로세서(111C)는 메모리 시스템(120D)의 비휘발성 메모리(122D)를 스토리지가 아닌 메모리로서 인식한다. 이에 따라서, 다이렉트 메모리 액세스(DMA)에 기초하여 스왑 메모리로 인식된 비휘발성 메모리(122D)로부터 페이지 폴트가 발생된 페이지를 읽어내어 메인 메모리(112C)에 기입하는 오퍼레이션을 수행한다.
[스텝 3f]
스텝 2f를 마치고 나서, 프로세서(111C)는 제1저장 수단(111-1)에 저장된 프로세스 ID가 지시하는 프로세스 동작을 재개한다. 예로서, 스텝 2f를 마치고 나서, 프로세서(111C)는 제1저장 수단(111-1)에 저장된 프로세스 ID가 지시하는 프로세스를 웨이크 업 시키는 처리를 수행한다. 이에 따라서, 페이지 폴트가 발생되어 중단된 프로세스가 재개된다.
위에서 설명한 바와 같이, Swap API_3이 실행될 때 다이렉트 메모리 액세스(DMA)에 의하여 스왑 메모리에 대한 액세스를 선점할 수 있고, 또한 페이지 폴트가 발생된 페이지가 메인 메모리(112C)에 로딩된 후에 프로세서(111C)는 페이지 폴트가 발생되어 슬립(sleep) 상태에 있는 프로세스를 바로 재개할 수 있게 된다.
도 3a ~ 3c는 본 발명의 또 다른 실시 예들에 따른 전자 장치의 블록 구성도이다.
우선, 도 3a를 참조하여 본 발명의 실시 예에 따른 전자 장치(100G)에 대하여 설명하기로 한다.
도 3a에 도시된 바와 같이, 전자 장치(100G)는 호스트(110A) 및 메모리 시스템(120E)을 포함한다.
전자 장치(100G)의 호스트(110A) 구성은 도 1a에 도시된 전자 장치(100A)의 호스트(110A) 구성과 동일하므로, 중복적인 설명은 피하기로 한다.
메모리 시스템(120E)은 컨트롤러(121E), 휘발성 메모리(VM; 122E) 및 비휘발성 메모리(NVM; 123E)를 포함한다.
메모리 시스템(120E)의 컨트롤러(121E)는 유선 또는 무선 인터페이스(130)를 통하여 호스트(110A)의 프로세서(111A)로부터 정보를 수신하거나 프로세서(111A)로 정보를 전송할 수 있다.
컨트롤러(121E)는 휘발성 메모리(122E) 및 비휘발성 메모리(123E)에 각각 전기적으로 연결되어 있다. 컨트롤러(121E)는 어드레스 버스, 제어 버스 및/또는 데이터 버스를 포함하는 버스들(124A, 124B)을 통하여 휘발성 메모리(122E) 및 비휘발성 메모리(123E)에 각각 연결될 수 있다.
휘발성 메모리(122E) 및 비휘발성 메모리(123E)는 각각 호스트(110A)의 프로세서(111A)에서 스토리지(storage)로서 인식된다.
컨트롤러(121E)는 호스트(110A)로부터 수신된 커맨드에 따라서 호스트(110A)로부터 전송된 데이터를 휘발성 메모리(122E) 또는 비휘발성 메모리(123E)에 쓰거나 휘발성 메모리(122E) 또는 비휘발성 메모리(123E)로부터 데이터를 읽어내어 호스트(110A)로 전송하는 오퍼레이션을 수행할 수 있다.
그러면, 전자 장치(100G)에서 수행되는 메모리 스왑 오퍼레이션에 대하여 설명하기로 한다.
프로세서(111A)는 페이지 폴트가 발생되는 경우에 메인 메모리(112A)에 저장되어 있는 Swap API_1을 구동시킨다. 이에 따라서, 페이지 폴트가 발생되면 Swap API_1에 의하여 아래의 스텝 1g~ 3g를 수행한다.
[스텝 1g]
페이지 폴트가 발생된 프로세스에 대한 정보를 제1저장 수단(111-1)에 기입한다. 예로서, 페이지 폴트가 발생된 프로세스 ID를 제1저장 수단(111-1)에 기입할 수 있다. 다른 예로서, 페이지 폴트가 발생된 프로세스 ID 및 페이지 폴트가 발생된 페이지를 메모리 시스템(120E)의 스토리지인 휘발성 메모리(122E) 또는 비휘발성 메모리(123E)로부터 메인 메모리(112A)에 복사하기 위한 리퀘스트 정보를 제1저장 수단(111-1)에 기입할 수 있다.
[스텝 2g]
스토리지 액세스 프로세스에 기초하여 페이지 폴트가 발생된 페이지를 스토리지로 인식된 휘발성 메모리(122E) 또는 비휘발성 메모리(123E)로부터 메인 메모리(112A)에 복사하는 오퍼레이션을 수행한다.
[스텝 3g]
스텝 2g를 마치고 나서, 프로세서(111A)는 제1저장 수단(111-1)에 저장된 프로세스 ID가 지시하는 프로세스 동작을 재개한다.
다음으로, 도 3b를 참조하여 본 발명의 실시 예에 따른 전자 장치(100E)에 대하여 설명하기로 한다.
도 3b에 도시된 바와 같이, 전자 장치(100H)는 호스트(110B) 및 메모리 시스템(120F)을 포함한다.
전자 장치(100H)의 호스트(110B) 구성은 도 1b에 도시된 전자 장치(100B)의 호스트(110B) 구성과 동일하므로, 중복적인 설명은 피하기로 한다.
메모리 시스템(120F)은 컨트롤러(121F), 휘발성 메모리(VM; 122F) 및 비휘발성 메모리(NVM; 123F)를 포함한다.
메모리 시스템(120F)의 컨트롤러(121F)는 유선 또는 무선 인터페이스(130)를 통하여 호스트(110B)의 프로세서(111B)로부터 정보를 수신하거나 프로세서(111B)로 정보를 전송할 수 있다.
컨트롤러(121F)는 휘발성 메모리(122F) 및 비휘발성 메모리(123F)에 각각 전기적으로 연결되어 있다. 컨트롤러(121F)는 어드레스 버스, 제어 버스 및/또는 데이터 버스를 포함하는 버스들(124A, 124B)을 통하여 휘발성 메모리(122F) 및 비휘발성 메모리(123F)에 각각 연결될 수 있다.
호스트(110B)의 프로세서(111B)에서 휘발성 메모리(122F)는 스왑 메모리로서 인식되고, 비휘발성 메모리(123F)는 스토리지(storage)로서 인식된다.
호스트(110B)에 메모리 시스템(120F)이 접속되면, 호스트(110B)의 프로세서(111B)는 메모리 시스템(120F)의 휘발성 메모리(122F)를 스왑 메모리로 인식하여 메모리 맵(memory map)에 휘발성 메모리(122F)를 스왑 메모리로 등록한다. 그리고, 비휘발성 메모리(123F)를 스토리지로서 메모리 맵에 등록할 수 있다.
컨트롤러(121F)는 호스트(110B)로부터 수신된 커맨드에 따라서 호스트(110B)로부터 전송된 데이터를 휘발성 메모리(122F) 또는 비휘발성 메모리(123F)에 쓰거나 휘발성 메모리(122F) 또는 비휘발성 메모리(123F)로부터 데이터를 읽어내어 호스트(110B)로 전송하는 오퍼레이션을 수행할 수 있다.
그러면, 전자 장치(100H)에서 수행되는 메모리 스왑 오퍼레이션에 대하여 설명하기로 한다.
프로세서(111B)는 페이지 폴트가 발생되는 경우에 메인 메모리(112B)에 저장되어 있는 Swap API_2를 구동시킨다. 이에 따라서, 페이지 폴트가 발생되면 Swap API_2에 의하여 아래의 스텝 1h~ 2h를 수행한다.
[스텝 1h]
다이렉트 메모리 액세스(DMA)에 기초하여 스왑 메모리로 인식된 휘발성 메모리(122F)에 저장된 페이지 폴트가 발생된 페이지를 메인 메모리(112B)에 복사하는 오퍼레이션을 수행한다. 다시 말해, 프로세서(111B)는 메모리 시스템(120H)의 휘발성 메모리(122F)를 스토리지가 아닌 메모리로서 인식한다. 이에 따라서, 다이렉트 메모리 액세스(DMA)에 기초하여 스왑 메모리로 인식된 휘발성 메모리(122F)로부터 페이지 폴트가 발생된 페이지를 읽어내어 메인 메모리(112B)에 기입하는 오퍼레이션을 수행한다. 이로 인하여 페이지 폴트가 발생되는 경우에 다이렉트 메모리 액세스(DMA)에 의하여 스왑 메모리에 대한 액세스를 선점할 수 있게 된다.
[스텝 2h]
스텝 1h를 마치고 나서, 프로세서(111B)는 페이지 폴트가 발생된 프로세스의 동작 재개를 준비한다. 예로서, 스텝 1h에 따라서 페이지 폴트가 발생된 페이지가 메인 메모리(112B)에 저장된 후에 프로세서(111B)는 슬립(sleep)이 발생된 프로세스들은 초기 설정된 규칙에 따른 순서에 기초하여 웨이크 업(wake up) 처리를 기다린다.
다음으로, 도 3c를 참조하여 본 발명의 실시 예에 따른 전자 장치(100I)에 대하여 설명하기로 한다.
도 3c에 도시된 바와 같이, 전자 장치(100I)는 호스트(110C) 및 메모리 시스템(120F)을 포함한다.
전자 장치(100I)의 호스트(110C) 구성은 도 1c에 도시된 전자 장치(100C)의 호스트(110C) 구성과 동일하고, 전자 장치(100I)의 메모리 시스템(120F) 구성은 도 3b의 메모리 시스템(120F) 구성과 동일하므로, 중복적인 설명은 피하기로 한다.
그러면, 전자 장치(100I)에서 수행되는 메모리 스왑 오퍼레이션에 대하여 설명하기로 한다.
프로세서(111C)는 페이지 폴트가 발생되는 경우에 메인 메모리(112C)에 저장되어 있는 Swap API_3을 구동시킨다. 이에 따라서, 페이지 폴트가 발생되면 Swap API_3에 의하여 아래의 스텝 1i~ 3i를 수행한다.
[스텝 1i]
페이지 폴트가 발생된 프로세스에 대한 정보를 제1저장 수단(111-1)에 기입한다. 예로서, 페이지 폴트가 발생된 프로세스 ID를 제1저장 수단(111-1)에 기입할 수 있다. 다른 예로서, 페이지 폴트가 발생된 프로세스 ID 및 페이지 폴트가 발생된 페이지를 스왑 메모리로 인식된 메모리 시스템(120F)의 휘발성 메모리(122F)로부터 메인 메모리(112C)에 복사하기 위한 리퀘스트 정보를 제1저장 수단(111-1)에 저장할 수 있다.
[스텝 2i]
다이렉트 메모리 액세스(DMA)에 기초하여 스왑 메모리로 인식된 휘발성 메모리(122D)에 저장된 페이지 폴트가 발생된 페이지를 메인 메모리(112C)에 복사하는 오퍼레이션을 수행한다. 다시 말해, 프로세서(111C)는 메모리 시스템(120F)의 휘발성 메모리(122F)를 스토리지가 아닌 메모리로서 인식한다. 이에 따라서, 다이렉트 메모리 액세스(DMA)에 기초하여 스왑 메모리로 인식된 휘발성 메모리(122F)로부터 페이지 폴트가 발생된 페이지를 읽어내어 메인 메모리(112C)에 기입하는 오퍼레이션을 수행한다.
[스텝 3i]
스텝 2i를 마치고 나서, 프로세서(111C)는 제1저장 수단(111-1)에 저장된 프로세스 ID가 지시하는 프로세스 동작을 재개한다.
도 4a ~ 4b는 본 발명의 또 다른 실시 예들에 따른 전자 장치의 블록 구성도이다.
우선, 도 4a를 참조하여 본 발명의 실시 예에 따른 전자 장치(100J)에 대하여 설명하기로 한다.
도 4a에 도시된 바와 같이, 전자 장치(100J)는 호스트(110B) 및 메모리 시스템(120G)을 포함한다.
전자 장치(100J)의 호스트(110B) 구성은 도 1b에 도시된 전자 장치(100B)의 호스트(110B) 구성과 동일하므로, 중복적인 설명은 피하기로 한다.
메모리 시스템(120G)은 컨트롤러(121G), 휘발성 메모리(VM; 122G) 및 비휘발성 메모리(NVM; 123G)를 포함한다.
메모리 시스템(120G)의 컨트롤러(121G)는 유선 또는 무선 인터페이스(130)를 통하여 호스트(110B)의 프로세서(111B)로부터 정보를 수신하거나 프로세서(111B)로 정보를 전송할 수 있다.
컨트롤러(121G)는 휘발성 메모리(122G) 및 비휘발성 메모리(123G)에 각각 전기적으로 연결되어 있다. 컨트롤러(121G)는 어드레스 버스, 제어 버스 및/또는 데이터 버스를 포함하는 버스들(124A, 124B)을 통하여 휘발성 메모리(122G) 및 비휘발성 메모리(123G)에 각각 연결될 수 있다.
호스트(110B)의 프로세서(111B)에서 비휘발성 메모리(123G)는 스왑 메모리로서 인식되고, 휘발성 메모리(122G)는 스토리지(storage)로서 인식된다.
호스트(110B)에 메모리 시스템(120G)이 접속되면, 호스트(110B)의 프로세서(111B)는 메모리 시스템(120G)의 비휘발성 메모리(123G)를 스왑 메모리로 인식하여 메모리 맵(memory map)에 비휘발성 메모리(123G)를 스왑 메모리로 등록한다. 그리고, 휘발성 메모리(122G)를 스토리지로서 메모리 맵에 등록할 수 있다.
컨트롤러(121G)는 호스트(110B)로부터 수신된 커맨드에 따라서 호스트(110B)로부터 전송된 데이터를 휘발성 메모리(122G) 또는 비휘발성 메모리(123G)에 쓰거나 휘발성 메모리(122G) 또는 비휘발성 메모리(123G)로부터 데이터를 읽어내어 호스트(110B)로 전송하는 오퍼레이션을 수행할 수 있다.
그러면, 전자 장치(100J)에서 수행되는 메모리 스왑 오퍼레이션에 대하여 설명하기로 한다.
프로세서(111B)는 페이지 폴트가 발생되는 경우에 메인 메모리(112B)에 저장되어 있는 Swap API_2를 구동시킨다. 이에 따라서, 페이지 폴트가 발생되면 Swap API_2에 의하여 아래의 스텝 1j~ 2j를 수행한다.
[스텝 1j]
다이렉트 메모리 액세스(DMA)에 기초하여 스왑 메모리로 인식된 비휘발성 메모리(123G)에 저장된 페이지 폴트가 발생된 페이지를 메인 메모리(112B)에 복사하는 오퍼레이션을 수행한다. 다시 말해, 프로세서(111B)는 메모리 시스템(120G)의 비휘발성 메모리(123G)를 스토리지가 아닌 메모리로서 인식한다. 이에 따라서, 다이렉트 메모리 액세스(DMA)에 기초하여 스왑 메모리로 인식된 비휘발성 메모리(123G)로부터 페이지 폴트가 발생된 페이지를 읽어내어 메인 메모리(112B)에 기입하는 오퍼레이션을 수행한다.
[스텝 2j]
스텝 1j를 마치고 나서, 프로세서(111B)는 페이지 폴트가 발생된 프로세스의 동작 재개를 준비한다. 예로서, 스텝 1j에 따라서 페이지 폴트가 발생된 페이지가 메인 메모리(112B)에 저장된 후에 프로세서(111B)는 슬립(sleep)이 발생된 프로세스들은 초기 설정된 규칙에 따른 순서에 기초하여 웨이크 업(wake up) 처리를 기다린다.
다음으로, 도 4b를 참조하여 본 발명의 실시 예에 따른 전자 장치(100K)에 대하여 설명하기로 한다.
도 4b에 도시된 바와 같이, 전자 장치(100K)는 호스트(110C) 및 메모리 시스템(120G)을 포함한다.
전자 장치(100K)의 호스트(110C) 구성은 도 1c에 도시된 전자 장치(100C)의 호스트(110C) 구성과 동일하고, 전자 장치(100K)의 메모리 시스템(120G) 구성은 도 4a의 메모리 시스템(120G) 구성과 동일하므로, 중복적인 설명은 피하기로 한다.
그러면, 전자 장치(100K)에서 수행되는 메모리 스왑 오퍼레이션에 대하여 설명하기로 한다.
프로세서(111C)는 페이지 폴트가 발생되는 경우에 메인 메모리(112C)에 저장되어 있는 Swap API_3을 구동시킨다. 이에 따라서, 페이지 폴트가 발생되면 Swap API_3에 의하여 아래의 스텝 1k~ 3k를 수행한다.
[스텝 1k]
페이지 폴트가 발생된 프로세스에 대한 정보를 제1저장 수단(111-1)에 기입한다. 예로서, 페이지 폴트가 발생된 프로세스 ID를 제1저장 수단(111-1)에 기입할 수 있다. 다른 예로서, 페이지 폴트가 발생된 프로세스 ID 및 페이지 폴트가 발생된 페이지를 스왑 메모리로 인식된 메모리 시스템(120G)의 비휘발성 메모리(123G)로부터 메인 메모리(112C)에 복사하기 위한 리퀘스트 정보를 제1저장 수단(111-1)에 기입할 수 있다.
[스텝 2k]
다이렉트 메모리 액세스(DMA)에 기초하여 스왑 메모리로 인식된 휘발성 메모리(122D)에 저장된 페이지 폴트가 발생된 페이지를 메인 메모리(112C)에 복사하는 오퍼레이션을 수행한다. 다시 말해, 프로세서(111C)는 메모리 시스템(120G)의 비휘발성 메모리(123G)를 스토리지가 아닌 메모리로서 인식한다. 이에 따라서, 다이렉트 메모리 액세스(DMA)에 기초하여 스왑 메모리로 인식된 비휘발성 메모리(123G)로부터 페이지 폴트가 발생된 페이지를 읽어내어 메인 메모리(112C)에 기입하는 오퍼레이션을 수행한다.
[스텝 3k]
스텝 2k를 마치고 나서, 프로세서(111C)는 제1저장 수단(111-1)에 저장된 프로세스 ID가 지시하는 프로세스 동작을 재개한다.
도 5a ~ 5b는 본 발명의 또 다른 실시 예들에 따른 전자 장치의 블록 구성도이다.
우선, 도 5a를 참조하여 본 발명의 실시 예에 따른 전자 장치(100L)에 대하여 설명하기로 한다.
도 5a에 도시된 바와 같이, 전자 장치(100L)는 호스트(110B) 및 메모리 시스템(120H)을 포함한다.
전자 장치(100L)의 호스트(110B) 구성은 도 1b에 도시된 전자 장치(100B)의 호스트(110B) 구성과 동일하므로, 중복적인 설명은 피하기로 한다.
메모리 시스템(120H)은 컨트롤러(121H), 휘발성 메모리(VM; 122H) 및 비휘발성 메모리(NVM; 123H)를 포함한다.
메모리 시스템(120H)의 컨트롤러(121H)는 유선 또는 무선 인터페이스(130)를 통하여 호스트(110B)의 프로세서(111B)로부터 정보를 수신하거나 프로세서(111B)로 정보를 전송할 수 있다.
컨트롤러(121H)는 휘발성 메모리(122H) 및 비휘발성 메모리(123H)에 각각 전기적으로 연결되어 있다. 컨트롤러(121H)는 어드레스 버스, 제어 버스 및/또는 데이터 버스를 포함하는 버스들(124A, 124B)을 통하여 휘발성 메모리(122H) 및 비휘발성 메모리(123H)에 각각 연결될 수 있다.
호스트(110B)의 프로세서(111B)에서 휘발성 메모리(122G) 및 비휘발성 메모리(123G)는 각각 스왑 메모리로서 인식된다.
호스트(110B)에 메모리 시스템(120H)이 접속되면, 호스트(110B)의 프로세서(111B)는 메모리 시스템(120H)의 휘발성 메모리(122H) 및 비휘발성 메모리(123G)를 각각 스왑 메모리로 인식하여 메모리 맵(memory map)에 휘발성 메모리(122H) 및 비휘발성 메모리(123G)를 스왑 메모리로 등록한다.
컨트롤러(121H)는 호스트(110B)로부터 수신된 커맨드에 따라서 호스트(110B)로부터 전송된 데이터를 휘발성 메모리(122H) 또는 비휘발성 메모리(123H)에 쓰거나 휘발성 메모리(122H) 또는 비휘발성 메모리(123H)로부터 데이터를 읽어내어 호스트(110B)로 전송하는 오퍼레이션을 수행할 수 있다.
그러면, 전자 장치(100L)에서 수행되는 메모리 스왑 오퍼레이션에 대하여 설명하기로 한다.
프로세서(111B)는 페이지 폴트가 발생되는 경우에 메인 메모리(112B)에 저장되어 있는 Swap API_2를 구동시킨다. 이에 따라서, 페이지 폴트가 발생되면 Swap API_2에 의하여 아래의 스텝 1l~ 2l을 수행한다.
[스텝 1l]
다이렉트 메모리 액세스(DMA)에 기초하여 스왑 메모리로 인식된 휘발성 메모리(122H) 또는 비휘발성 메모리(123H)에 저장된 페이지 폴트가 발생된 페이지를 메인 메모리(112B)에 복사하는 오퍼레이션을 수행한다. 다시 말해, 프로세서(111B)는 메모리 시스템(120H)의 휘발성 메모리(122H) 및 비휘발성 메모리(123H)를 스토리지가 아닌 메모리로서 인식한다. 이에 따라서, 다이렉트 메모리 액세스(DMA)에 기초하여 스왑 메모리로 인식된 휘발성 메모리(122H) 또는 비휘발성 메모리(123H)로부터 페이지 폴트가 발생된 페이지를 메인 메모리(112B)에 복사하는 오퍼레이션을 수행한다.
[스텝 2l]
스텝 1l을 마치고 나서, 프로세서(111B)는 페이지 폴트가 발생된 프로세스의 동작 재개를 준비한다. 예로서, 스텝 1l에 따라서 페이지 폴트가 발생된 페이지가 메인 메모리(112B)에 저장된 후에 프로세서(111B)는 슬립(sleep)이 발생된 프로세스들은 초기 설정된 규칙에 따른 순서에 기초하여 웨이크 업(wake up) 처리를 기다린다.
다음으로, 도 5b를 참조하여 본 발명의 실시 예에 따른 전자 장치(100M)에 대하여 설명하기로 한다.
도 5b에 도시된 바와 같이, 전자 장치(100M)는 호스트(110C) 및 메모리 시스템(120H)을 포함한다.
전자 장치(100M)의 호스트(110C) 구성은 도 1c에 도시된 전자 장치(100C)의 호스트(110C) 구성과 동일하고, 전자 장치(100M)의 메모리 시스템(120H) 구성은 도 5a의 메모리 시스템(120G) 구성과 동일하므로, 중복적인 설명은 피하기로 한다.
그러면, 전자 장치(100M)에서 수행되는 메모리 스왑 오퍼레이션에 대하여 설명하기로 한다.
프로세서(111C)는 페이지 폴트가 발생되는 경우에 메인 메모리(112C)에 저장되어 있는 Swap API_3을 구동시킨다. 이에 따라서, 페이지 폴트가 발생되면 Swap API_3에 의하여 아래의 스텝 1m~ 3m을 수행한다.
[스텝 1m]
페이지 폴트가 발생된 프로세스에 대한 정보를 제1저장 수단(111-1)에 기입한다. 예로서, 페이지 폴트가 발생된 프로세스 ID를 제1저장 수단(111-1)에 기입할 수 있다. 다른 예로서, 페이지 폴트가 발생된 프로세스 ID 및 페이지 폴트가 발생된 페이지를 스왑 메모리로 인식된 메모리 시스템(120H)의 휘발성 메모리(122H) 또는 비휘발성 메모리(123H)로부터 메인 메모리(112C)에 복사하기 위한 리퀘스트 정보를 제1저장 수단(111-1)에 기입할 수 있다.
[스텝 2m]
다이렉트 메모리 액세스(DMA)에 기초하여 스왑 메모리로 인식된 휘발성 메모리(122D)에 저장된 페이지 폴트가 발생된 페이지를 메인 메모리(112C)에 복사하는 오퍼레이션을 수행한다. 다시 말해, 프로세서(111C)는 메모리 시스템(120H)의 휘발성 메모리(122H) 및 비휘발성 메모리(123H)를 스토리지가 아닌 메모리로서 인식한다. 이에 따라서, 다이렉트 메모리 액세스(DMA)에 기초하여 스왑 메모리로 인식된 휘발성 메모리(122H) 또는 비휘발성 메모리(123H)로부터 페이지 폴트가 발생된 페이지를 읽어내어 메인 메모리(112C)에 기입하는 오퍼레이션을 수행한다.
[스텝 3m]
스텝 2m을 마치고 나서, 프로세서(111C)는 제1저장 수단(111-1)에 저장된 프로세스 ID가 지시하는 프로세스 동작을 재개한다.
도 6a는 도 1a, 2a 및 3a에 도시된 메인 메모리(112A)에 저장되는 프로그램들 및 데이터들을 예시적으로 보여주는 도면이다.
도 6a를 참조하면, 메인 메모리(112A)에는 Swap API_1(112-1A), 페이지 테이블(page table; 112-2), 디바이스 드라이버(device driver; 112-3), 메모리 매니저(memory manager; 112-4), 파일 시스템(file system; 112-5), 애플리케이션(application; 112-6) 및 오퍼레이팅 시스템(operating system; 112-7)이 저장될 수 있다.
오퍼레이팅 시스템(112-7)은 호스트(110A)의 하드웨어 및 소프트웨어 자원(resource)을 제어하는 프로그램이다. 오퍼레이팅 시스템(112-7)은 하드웨어와 애플리케이션 프로그램간의 인터페이스 역할을 하며 호스트(110A)의 자원을 관리한다.
애플리케이션(112-6)은 호스트(110A)에서 실행되는 다양한 응용 프로그램들을 나타낸다. 예로서, 파일 또는 데이터를 가공하는 동작 등을 지원하는 프로그램들이 포함될 수 있다.
파일 시스템(112-5)은 파일 또는 데이터를 호스트(110A)의 메인 메모리(112A) 또는 호스트(110A)에 접속된 메모리 시스템에 저장하거나 검색하기 위하여 논리적인 저장 위치를 관리하는 프로그램이다.
메모리 매니저(112-4)는 메인 메모리(112A)에서 수행되는 메모리 액세스 동작 또는 호스트(110A)에 접속된 메모리 시스템에서 수행되는 메모리 액세스 동작을 제어하는 프로그램이다.
디바이스 드라이버(112-3)는 호스트(110A)에 접속된 메모리 시스템과의 통신을 지원하는 프로그램이다.
페이지 테이블(112-2)에는 메인 메모리(112A) 및 호스트(110A)에 접속된 메모리 시스템에 저장되어 있는 정보에 대한 페이지 목록들이 저장되어 있다. 예로서, 페이지 목록들은 논리적 페이지 주소에 대응되는 물리적 페이지 주소에 대한 정보로 구성될 수 있다. 페이지 테이블(112-2)에 저장된 물리적 페이지 주소에 기초하여 액세스하고자 하는 정보가 메인 메모리(122A)에 저장되어 있는지 또는 호스트(110A)에 접속된 메모리 시스템에 저장되어 있는지를 판단할 수 있다. 그리고, 페이지 테이블(112-2)에 메모리 맵(memory map) 정보가 포함될 수 있다. 다른 예로서, 메모리 맵(memory map) 정보를 페이지 테이블과 분리하여 별도로 저장할 수도 있다.
Swap API_1(112-1A)은 페이지 폴트가 발생되는 경우에 위에서 설명한 바와 같은 메모리 스왑 오퍼레이션을 수행하기 위한 프로그램의 일 예이다.
도 6b는 도 1b, 2b, 3b, 4a 및 5a에 도시된 메인 메모리(112B)에 저장되는 프로그램들 및 데이터들을 예시적으로 보여주는 도면이다.
도 6b를 참조하면, 메인 메모리(112B)에는 Swap API_2(112-1B), 페이지 테이블(page table; 112-2), 디바이스 드라이버(device driver; 112-3), 메모리 매니저(memory manager; 112-4), 파일 시스템(file system; 112-5), 애플리케이션(application; 112-6) 및 오퍼레이팅 시스템(operating system; 112-7)이 저장될 수 있다.
페이지 테이블(112-2) ~ 오퍼레이팅 시스템(112-7)은 도 6a에서 이미 설명하였으므로, 중복적인 설명은 피하기로 한다. 그리고, Swap API_2(112-1B)는 페이지 폴트가 발생되는 경우에 위에서 설명한 바와 같은 메모리 스왑 오퍼레이션을 수행하기 위한 프로그램의 다른 예이다.
도 6c는 도 1c, 2c, 3c, 4b 및 5b에 도시된 메인 메모리(112C)에 저장되는 프로그램들 및 데이터들을 예시적으로 보여주는 도면이다.
도 6c를 참조하면, 메인 메모리(112C)에는 Swap API_3(112-1C), 페이지 테이블(page table; 112-2), 디바이스 드라이버(device driver; 112-3), 메모리 매니저(memory manager; 112-4), 파일 시스템(file system; 112-5), 애플리케이션(application; 112-6) 및 오퍼레이팅 시스템(operating system; 112-7)이 저장될 수 있다.
페이지 테이블(112-2) ~ 오퍼레이팅 시스템(112-7)은 도 6a에서 이미 설명하였으므로, 중복적인 설명은 피하기로 한다. 그리고, Swap API_3(112-1C)은 페이지 폴트가 발생되는 경우에 위에서 설명한 바와 같은 메모리 스왑 오퍼레이션을 수행하기 위한 프로그램의 또 다른 예이다.
도 7은 본 발명의 일 실시 예에 따른 Swap API_1에 기초한 메모리 스왑 오퍼레이션 실행 방법의 흐름도이다.
예로서, 스왑 API_1에 기초한 스왑 오퍼레이션은 도 1a, 2a 및 3a에 도시된 전자 장치들(100A, 100D, 100G)에서 실행될 수 있다.
프로세서(111A)는 입력되는 사용자 인터페이스 정보에 기초한 애플리케이션 프로세스를 수행하기 위한 메인 메모리(112A)에 대한 액세스를 실행한다(S110). 예로서, 메인 메모리(112A)에 대한 액세스는 페이지 테이블(112-2) 및 파일 시스템(115-5)을 이용하여 수행될 수 있다.
메인 메모리(112A) 액세스 과정에서 페이지 폴트가 발생되면(S120), 프로세서(111A)는 페이지 폴트가 발생된 애플리케이션 프로세스를 슬립(sleep) 상태로 전환한다(S130). 페이지 폴트는 애플리케이션 프로세스를 수행하기 위하여 읽고자 하는 페이지가 메인 메모리(112A)에 저장되어 있지 않는 경우에 발생된다. 예로서, 오퍼레이팅 시스템에서 페이지 폴트가 발생된 애플리케이션 프로세스를 슬립(sleep) 상태로 전환 처리할 수 있다.
프로세서(111A)는 페이지 폴트가 발생된 프로세스에 대한 정보를 제1저장 수단(111-1)에 저장한다(S140). 예로서, 페이지 폴트가 발생된 프로세스 ID를 제1저장 수단(111-1)에 저장할 수 있다. 다른 예로서, 페이지 폴트가 발생된 프로세스 ID 및 페이지 폴트가 발생된 페이지를 메인 메모리(112A)에 저장하기 위한 리퀘스트 정보를 제1저장 수단(111-1)에 저장할 수 있다.
다음으로, 프로세서(111A)는 블록 I/O 큐잉(queuing) 처리를 수행한다(S150). 예로서, 호스트(110A)에 접속된 메모리 시스템의 스토리지로부터 페이지 폴트가 발생된 페이지를 블록 단위로 읽기 요청을 하기 위한 블록 I/O 큐잉(queuing) 처리를 수행한다.
다음으로, 블록 I/O 큐잉(queuing) 처리에 기초한 읽기 요청에 따라서 메모리 시스템은 스토리지로서 응답한다(S160). 세부적으로, 블록 I/O 큐잉(queuing) 처리에 기초한 읽기 요청에 따라서 메모리 시스템은 페이지 폴트가 발생된 페이지를 읽어내는 프로세스를 수행한다.
다음으로, 메모리 시스템은 블록 I/O 응답 처리를 한다(S170). 세부적으로, 메모리 시스템에서 읽어낸 페이지 폴트가 발생된 페이지를 블록 단위로 호스트(110A)로 출력하는 프로세스를 수행한다. 그리고 나서, 프로세서(111A)는 호스트(110A)로 입력된 페이지 폴트가 발생된 페이지를 메인 메모리(112A)에 저장한다.
다음으로, 프로세서(111A)는 페이지 테이블 업데이트 처리를 수행한다(S180). 즉, 페이지 폴트가 발생된 페이지를 메인 메모리(112A)에 저장하고 나서, 해당 페이지에 대한 논리적 페이지 주소를 메인 메모리(112A)의 물리적 페이지 주소에 매핑시킨다.
다음으로, 프로세서(111A)는 제1저장 수단(111-1)에 저장된 프로세스 ID가 가리키는 프로세스를 웨이크 업(wake up) 처리한다(S190). 예로서, 프로세스에 대한 웨이크 업 처리는 오퍼레이팅 시스템에서 수행할 수 있다.
다음으로, 프로세서(111A)는 웨이크 업 처리된 프로세스를 실행한다(S200). 이에 따라서, 페이지 폴트에 의하여 중단된 프로세스를 페이지 폴트가 발생된 페이지를 메인 메모리(112A)에 저장한 후에 페이지 폴트에 의하여 중단된 프로세스를 바로 재개할 수 있게 된다.
위에서 오퍼레이션 S140 ~ S190은 Swap API_1에 의하여 수행되도록 프로그래밍 될 수 있다.
도 8은 본 발명의 다른 실시 예에 따른 Swap API_2에 기초한 메모리 스왑 오퍼레이션 실행 방법의 흐름도이다.
예로서, 스왑 API_2에 기초한 스왑 오퍼레이션은 도 1b, 2b, 3b, 4a 및 5a에 도시된 전자 장치들(100B, 100E, 100H, 100J, 100L)에서 실행될 수 있다.
프로세서(111B)는 입력되는 사용자 인터페이스 정보에 기초한 애플리케이션 프로세스를 수행하기 위한 메인 메모리(112B)에 대한 액세스를 실행한다(S210).
메인 메모리(112B) 액세스 과정에서 페이지 폴트가 발생되면(S220), 프로세서(111B)는 페이지 폴트가 발생된 애플리케이션 프로세스를 슬립(sleep) 상태로 전환한다(S230). 페이지 폴트는 애플리케이션 프로세스를 수행하기 위하여 읽고자 하는 페이지가 메인 메모리(112B)에 저장되어 있지 않는 경우에 발생된다.
프로세서(111B)는 다이렉트 메모리 액세스(DMA)에 기초하여 호스트(110B)에 접속된 메모리 시스템의 스왑 메모리에 저장된 페이지 폴트가 발생된 페이지를 메인 메모리(112B)에 복사하는 오퍼레이션을 수행한다(S240). 즉, 메모리 시스템의 스왑 메모리에 대한 액세스는 스토리지 액세스 프로세스를 사용하지 않고 다이렉트 메모리 액세스 프로세스를 사용한다. 이로 인하여 페이지 폴트가 발생되는 경우에 다이렉트 메모리 액세스(DMA)에 의하여 스왑 메모리에 대한 액세스를 선점할 수 있게 된다.
다음으로, 프로세서(111B)는 페이지 폴트가 발생된 프로세스의 동작 재개를 준비한다(S250). 예로서, 페이지 폴트가 발생된 페이지가 메인 메모리(112B)에 저장된 후에 프로세서(111B)는 슬립(sleep)이 발생된 프로세스들을 초기 설정된 규칙에 따른 순서에 기초한 웨이크 업(wake up) 처리를 기다린다.
페이지 폴트가 발생된 프로세스에 대한 웨이크 업 동작을 수행되면, 프로세서(111B)는 페이지 폴트에 의하여 중단된 프로세스를 재개한다(S260).
위에서 오퍼레이션 S240 ~ S250은 Swap API_2에 의하여 수행되도록 프로그래밍 될 수 있다.
도 9는 본 발명의 또 다른 실시 예에 따른 Swap API_3에 기초한 메모리 스왑 오퍼레이션 실행 방법의 흐름도이다.
예로서, 스왑 API_3에 기초한 스왑 오퍼레이션은 도 1c, 2c, 3c, 4b 및 5b에 도시된 전자 장치들(100C, 100F, 100I, 100K, 100M)에서 실행될 수 있다.
프로세서(111C)는 입력되는 사용자 인터페이스 정보에 기초한 애플리케이션 프로세스를 수행하기 위한 메인 메모리(112C)에 대한 액세스를 실행한다(S310).
메인 메모리(112C) 액세스 과정에서 페이지 폴트가 발생되면(S320), 프로세서(111C)는 페이지 폴트가 발생된 애플리케이션 프로세스를 슬립(sleep) 상태로 전환한다(S330). 페이지 폴트는 애플리케이션 프로세스를 수행하기 위하여 읽고자 하는 페이지가 메인 메모리(112C)에 저장되어 있지 않는 경우에 발생된다.
프로세서(111C)는 페이지 폴트가 발생된 프로세스에 대한 정보를 제1저장 수단(111-1)에 기입한다(S340). 예로서, 페이지 폴트가 발생된 프로세스 ID를 제1저장 수단(111-1)에 기입할 수 있다. 다른 예로서, 페이지 폴트가 발생된 프로세스 ID 및 페이지 폴트가 발생된 페이지를 메인 메모리(112C)에 기입하기 위한 리퀘스트 정보를 제1저장 수단(111-1)에 기입할 수 있다.
다음으로, 프로세서(111C)는 다이렉트 메모리 액세스(DMA)에 기초하여 호스트(110C)에 접속된 메모리 시스템의 스왑 메모리에 저장된 페이지 폴트가 발생된 페이지를 메인 메모리(112C)에 복사하는 오퍼레이션을 수행한다(S350). 즉, 메모리 시스템의 스왑 메모리에 대한 액세스는 스토리지 액세스 프로세스를 사용하지 않고 다이렉트 메모리 액세스 프로세스를 사용한다. 이로 인하여 페이지 폴트가 발생되는 경우에 다이렉트 메모리 액세스(DMA)에 의하여 스왑 메모리에 대한 액세스를 선점할 수 있게 된다.
다음으로, 프로세서(111C)는 제1저장 수단(111-1)에 저장된 프로세스 ID가 가리키는 프로세스를 웨이크 업(wake up) 처리한다(S360). 페이지 폴트가 발생된 페이지를 메인 메모리(112C)에 저장하기 위한 리퀘스트에 대한 오퍼레이션을 마친 후에 바로 제1저장 수단(111-1)에 저장된 프로세스 ID가 가리키는 프로세스를 웨이크 업 처리한다.
다음으로, 프로세서(111C)는 웨이크 업 처리된 프로세스를 실행한다(S370). 이에 따라서, 페이지 폴트에 의하여 중단된 프로세스를 페이지 폴트가 발생된 페이지를 메인 메모리(112C)에 저장한 후에 페이지 폴트에 의하여 중단된 프로세스를 바로 재개할 수 있게 된다.
위에서 오퍼레이션 S340 ~ S360은 Swap API_3에 의하여 수행되도록 프로그래밍 될 수 있다.
도 10은 본 발명의 실시 예들에 따른 Swap API_1~3에 기초한 메모리 스왑 오퍼레이션 실행 방법이 적용되는 데이터 처리 시스템의 구현 예를 나타내는 블록도이다.
도 10을 참조하면, 데이터 처리 시스템(1000)은 프로세서(1100), RAM(1200), 입출력 장치(I/O; 1300), 메모리 시스템(1400), 전원 장치(1500) 및 버스(1600)를 포함할 수 있다.
한편, 도 10에는 도시되지 않았지만, 데이터 처리 시스템(1000)은 비디오 카드, 사운드 카드, 메모리 카드, USB 장치 등과 통신하거나, 또는 다른 전자 기기들과 통신할 수 있는 포트(port)들을 더 포함할 수 있다. 데이터 처리 시스템(1000)은 퍼스널 컴퓨터로 구현되거나, 노트북 컴퓨터, 휴대폰, PDA(personal digital assistant) 및 카메라 등과 같은 휴대용 전자 장치로 구현될 수 있다.
도 10에 도시된 프로세서(1100)는 도 1 ~ 도 5에 도시된 프로세서들(111A ~ 111C) 중의 적어도 하나가 적용될 수 있고, 도 10에 도시된 RAM(1200)은 도 1 ~ 도 5에 도시된 메인 메모리들(111A ~ 111C) 중의 적어도 하나가 적용될 수 있다. 또한, 도 10에 도시된 메모리 시스템(1400)은 도 1 ~ 도 5에 도시된 메모리 시스템들(120A ~120H) 중의 적어도 하나가 적용될 수 있다.
프로세서(1100)는 특정 계산들 또는 태스크(task)들을 수행할 수 있다. 실시예에 따라, 프로세서(1100)는 마이크로프로세서(micro-processor), 중앙 처리 장치(Central Processing Unit; CPU)일수 있다. 프로세서(1100)는 어드레스 버스(address bus), 제어 버스(control bus) 및 데이터 버스(data bus) 등과 같은 버스(1600)를 통하여 RAM(1200), 입출력 장치(1300) 및 메모리 시스템(1400)과 통신을 수행할 수 있다. 실시 예에 따라, 프로세서(1100)는 주변 구성요소 상호연결(Peripheral Component Interconnect; PCI) 버스와 같은 확장 버스에도 연결될 수 있다. 프로세서(1100)는 도 7 ~ 도 9에 도시된 흐름도에 따른 메모리 스왑 오퍼레이션을 수행할 수 있다.
RAM(1200)는 데이터 처리 시스템(1000)의 동작에 필요한 프로그램들 및 데이터들을 저장할 수 있다. RAM(1200)는 메인 메모리로서 동작한다. 예로서, RAM(1200)에는 도 6a ~ 6c에 도시된 바와 같은 프로그램 및 데이터들이 저장될 수 있다. 예를 들어, RAM(1200)는 디램(DRAM), 모바일 디램, 에스램(SRAM), 피램(PRAM), 에프램(FRAM), 알램(RRAM) 및/또는 엠램(MRAM)으로 구현될 수 있다.
메모리 시스템(1400)의 메모리(1420)는 휘발성 메모리 또는 비휘발성 메모리로 구현될 수 있다. 다른 예로서, 메모리(1420)는 하나 이상의 휘발성 메모리 및 비휘발성 메모리로 구현될 수도 있다.
입출력 장치(1300)는 키보드, 키패드, 마우스 등과 같은 입력 수단 및 프린터, 디스플레이 등과 같은 출력 수단을 포함할 수 있다. 전원 장치(1500)는 데이터 처리 시스템(1000)의 동작에 필요한 동작 전압을 공급할 수 있다.
그러면, 도 10의 데이터 처리 시스템(1000)에서 수행되는 본 발명의 실시 예에 따른 메모리 스왑 오퍼레이션 제어 동작에 대하여 도 11 ~ 14의 흐름도를 참조하여 설명하기로 한다.
우선, 도 11의 흐름도를 참조하여 본 발명의 실시 예에 따른 메모리 스왑 오퍼레이션 제어 방법을 설명하기로 한다.
프로세서(1100)는 프로세스 액세스 실행 과정에서 페이지 폴트가 발생되는지를 판단한다(S410). 프로세서(1100)는 입출력 장치(1300)를 통하여 수신되는 사용자 인터페이스 정보에 기초한 애플리케이션 프로세스를 수행하기 위하여 메인 메모리인 RAM(1200)에 대한 액세스를 실행하는 과정에서 페이지 폴트가 발생되는지를 판단한다. 페이지 폴트는 애플리케이션 프로세스를 수행하기 위하여 읽고자 하는 페이지가 RAM(1200)에 저장되어 있지 않는 경우에 발생된다. 참고적으로, 페이지 폴트가 발생되는 페이지에 대한 프로세스는 슬립(sleep) 상태로 전환된다.
페이지 폴트가 발생되는 경우에 프로세서(1100)는 페이지 폴트가 발생된 프로세스에 대한 정보를 제1저장 수단에 기입한다(S420). 예로서, 제1저장 수단은 도면에는 도시되어 있지 않으나 프로세서(1100)의 내부 레지스터로 구현될 수 있다. 다른 예로서, 제1저장 수단에 대한 저장 영역을 RAM(1200)의 특정 영역에 할당할 수도 있다. 페이지 폴트가 발생된 프로세스에 대한 정보는 페이지 폴트가 발생된 프로세스 ID가 포함될 수 있다. 또한, 페이지 폴트가 발생된 프로세스에 대한 정보는 페이지 폴트가 발생된 프로세스 ID 및 페이지 폴트가 발생된 페이지를 RAM(1200)에 저장하기 위한 리퀘스트 정보가 포함될 수도 있다.
다음으로, 프로세서(1100)는 스토리지 액세스 프로세스에 기초하여 스토리지로 인식된 메모리 시스템(1400)의 메모리(1420)에 저장된 페이지 폴트가 발생된 페이지를 RAM(1200)에 복사하는 오퍼레이션을 수행한다(S430). 여기에서, RAM(1200)은 데이터 처리 시스템(1000)의 메인 메모리가 된다. 세부적으로, 스토리지 액세스 프로세스에 기초하여 스토리지로 인식된 메모리 시스템(1400)의 메모리(1420)로부터 페이지 폴트가 발생된 페이지를 읽어내고, 읽어낸 페이지 폴트가 발생된 페이지를 RAM(1200)에 기입하는 오퍼레이션을 수행한다.
다음으로, 프로세서(1100)는 제1저장 수단에 저장된 프로세스 ID가 지시하는 프로세스 동작을 재개한다(S440). 예로서, 오퍼레이션 S430에서 페이지 폴트가 발생된 페이지가 RAM(1200)에 기입되는 동작이 완료될 때 프로세서(1100)는 제1저장 수단에 저장된 프로세스 ID가 가리키는 프로세스를 웨이크 업(wake up) 처리함으로써, 페이지 폴트가 발생된 프로세스 동작을 재개할 수 있다.
만일 오퍼레이션 S410의 판단 결과 페이지 폴트가 발생되지 않는 경우에는 프로세서(1200)는 해당 애플리케이션 프로세스를 실행한다(S450). 예로서, 프로세서(1200)는 사용자 인터페이스 정보에 기초하여 RAM(1200)에서 액세스한 해당 애플리케이션 프로세스를 실행한다.
다음으로, 도 12의 흐름도를 참조하여 본 발명의 다른 실시 예에 따른 메모리 스왑 오퍼레이션 제어 방법을 설명하기로 한다.
프로세서(1100)는 프로세스 액세스 실행 과정에서 페이지 폴트가 발생되는지를 판단한다(S510). 페이지 폴트 발생에 대한 설명은 도 11에서 이미 설명하였으므로, 중복적인 설명은 피하기로 한다.
페이지 폴트가 발생되는 경우에 프로세서(1100)는 다이렉트 메모리 액세스(DMA)에 기초하여 스왑 메모리로 인식된 메모리 시스템(1400)의 메모리(1420)에 저장된 페이지 폴트가 발생된 페이지를 메인 메모리인 RAM(1200)에 복사하는 오퍼레이션을 수행한다(S520). 즉, 프로세서(1100)에서의 메모리 시스템(1400)의 메모리(1420)에 대한 액세스는 스토리지 액세스 프로세스를 사용하지 않고 다이렉트 메모리 액세스 프로세스를 사용한다. 이로 인하여 페이지 폴트가 발생되는 경우에 다이렉트 메모리 액세스(DMA)에 의하여 스왑 메모리에 대한 액세스를 선점할 수 있게 된다.
다음으로, 프로세서(1100)는 페이지 폴트가 발생된 프로세스의 동작 재개를 준비한다(S530). 예로서, 페이지 폴트가 발생된 페이지가 RAM(1200)에 저장된 후에 프로세서(1100)는 슬립(sleep)이 발생된 프로세스들을 초기 설정된 규칙에 따른 순서에 기초한 웨이크 업(wake up) 처리를 실행할 수 있다.
페이지 폴트가 발생된 프로세스에 대한 웨이크 업 동작을 수행되면, 프로세서(1100)는 페이지 폴트에 의하여 중단된 프로세스를 재개한다(S540).
만일 오퍼레이션 S510의 판단 결과 페이지 폴트가 발생되지 않는 경우에는 프로세서(1200)는 해당 애플리케이션 프로세스를 실행한다(S550). 예로서, 프로세서(1200)는 사용자 인터페이스 정보에 기초하여 RAM(1200)에서 액세스한 해당 애플리케이션 프로세스를 실행한다.
다음으로, 도 13의 흐름도를 참조하여 본 발명의 또 다른 실시 예에 따른 메모리 스왑 오퍼레이션 제어 방법을 설명하기로 한다.
프로세서(1100)는 프로세스 액세스 실행 과정에서 페이지 폴트가 발생되는지를 판단한다(S610). 페이지 폴트 발생에 대한 설명은 도 11에서 이미 설명하였으므로, 중복적인 설명은 피하기로 한다.
페이지 폴트가 발생되는 경우에 프로세서(1100)는 페이지 폴트가 발생된 프로세스에 대한 정보를 제1저장 수단에 저장한다(S620). 페이지 폴트가 발생된 프로세스에 대한 정보 및 제1저장 수단에 대해서는 도 11의 오퍼레이션 S420에서 설명하였으므로, 중복적인 설명은 피하기로 한다.
다음으로, 프로세서(1100)는 다이렉트 메모리 액세스(DMA)에 기초하여 스왑 메모리로 인식된 메모리 시스템(1400)의 메모리(1420)에 저장된 페이지 폴트가 발생된 페이지를 메인 메모리인 RAM(1200)에 복사하는 오퍼레이션을 수행한다(S630). 즉, 프로세서(1100)에서의 메모리 시스템(1400)의 메모리(1420)에 대한 액세스는 스토리지 액세스 프로세스를 사용하지 않고 다이렉트 메모리 액세스 프로세스를 사용한다. 이로 인하여 페이지 폴트가 발생되는 경우에 다이렉트 메모리 액세스(DMA)에 의하여 스왑 메모리에 대한 액세스를 선점할 수 있게 된다.
다음으로, 프로세서(1100)는 제1저장 수단에 저장된 프로세스 ID가 지시하는 프로세스 동작을 재개한다(S640). 예로서, 오퍼레이션 S630에서 페이지 폴트가 발생된 페이지가 RAM(1200)에 기입되는 동작이 완료될 때 프로세서(1100)는 제1저장 수단에 저장된 프로세스 ID가 가리키는 프로세스를 웨이크 업(wake up) 처리함으로써, 페이지 폴트가 발생된 프로세스 동작을 재개할 수 있다.
만일 오퍼레이션 S610의 판단 결과 페이지 폴트가 발생되지 않는 경우에는 프로세서(1200)는 해당 애플리케이션 프로세스를 실행한다(S650). 예로서, 프로세서(1200)는 사용자 인터페이스 정보에 기초하여 RAM(1200)에서 액세스한 해당 애플리케이션 프로세스를 실행한다.
다음으로, 도 14의 흐름도를 참조하여 본 발명의 또 다른 실시 예에 따른 메모리 스왑 오퍼레이션 제어 방법을 설명하기로 한다.
프로세서(1100)는 프로세스 액세스 실행 과정에서 페이지 폴트가 발생되는지를 판단한다(S710). 페이지 폴트 발생에 대한 설명은 도 11에서 이미 설명하였으므로, 중복적인 설명은 피하기로 한다.
페이지 폴트가 발생되는 경우에 프로세서(1100)는 메인 메모리인 RAM(1200)에 페이지 폴트가 발생된 페이지를 저장할 수 있는 여유 공간이 남아 있는지를 판단한다(S720).
만일, RAM(1200)에 페이지 폴트가 발생된 페이지를 저장할 수 있는 여유 공간이 남아 있지 않은 경우에, 프로세서(1100)는 Swap API를 이용하여 스왑 아웃(swap-out) 처리를 수행한다(S730). Swap API_1~3 중의 어느 하나를 이용하여 RAM(1200)에 저장되어 적어도 하나의 페이지를 메모리 시스템(1400)의 메모리(1420)에 저장하는 스왑 아웃 동작을 수행할 수 있다. 예로서, 스왑 아웃 처리되는 페이지를 가장 오래 전에 사용된 페이지 순으로 결정할 수 있다.
예로서, Swap API_1에 따른 스왑 아웃 동작은 RAM(1200)에서 읽어낸 페이지를 스토리지 액세스 프로세스에 기초하여 스토리지로 인식된 메모리 시스템(1400)의 메모리(1420)에 기입하는 오퍼레이션을 수행할 수 있다. 다른 예로서, Swap API_2 및 Swap API_3에 따른 스왑 아웃 동작은 RAM(1200)에서 읽어낸 페이지를 다이렉트 메모리 액세스(DMA)에 기초하여 스왑 메모리로 인식된 메모리 시스템(1400)의 메모리(1420)에 기입하는 오퍼레이션을 수행할 수 있다.
RAM(1200)에 페이지 폴트가 발생된 페이지를 저장할 수 있는 여유 공간이 남아 있거나 스왑 아웃 동작에 의하여 여유 공간을 확보한 후에, 프로세서(1100)는 Swap API를 이용하여 스왑 인(swap-in) 처리를 수행한다(S740). Swap API_1~3 중의 어느 하나를 이용하여 페이지 폴트가 발생된 페이지를 메모리 시스템(1400)의 메모리(1420)로부터 RAM(1200)에 복사하는 스왑 인 오퍼레이션을 수행한다. Swap API_1~3에 따른 스왑 인 오퍼레이션에 대해서는 위에서 상세히 설명하였으므로 중복적인 설명은 피하기로 한다.
만일 오퍼레이션 S710의 판단 결과 페이지 폴트가 발생되지 않는 경우에는 프로세서(1200)는 해당 애플리케이션 프로세스를 실행한다(S750). 예로서, 프로세서(1200)는 사용자 인터페이스 정보에 기초하여 RAM(1200)에서 액세스한 해당 애플리케이션 프로세스를 실행한다.
한편, 상기에서 설명된 본 발명에 적용되는 메모리 시스템은 다양한 형태들의 패키지를 이용하여 실장 될 수 있다. 예를 들면, 본 발명에 따른 메모리 시스템은 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic MetricQuad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP), 등과 같은 패키지들을 이용하여 실장될 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100A ~ 100M : 전자 장치 110A ~ 110C : 호스트
120A ~ 120H, 1400 : 메모리 시스템 111A ~ 111C, 1100 : 프로세서
112A ~ 112C : 메인 메모리 113, 124, 124A, 124B, 1600 : 버스
130; 유선 또는 무선 인터페이스 121A ~ 121H : 컨트롤러
122A, 122B, 122E, 122F, 122G, 122H : 휘발성 메모리
122C, 122D, 123E, 123F, 123G, 123H : 비휘발성 메모리
1200 : RAM 1300 : 입출력 장치
1500 : 전원 장치
120A ~ 120H, 1400 : 메모리 시스템 111A ~ 111C, 1100 : 프로세서
112A ~ 112C : 메인 메모리 113, 124, 124A, 124B, 1600 : 버스
130; 유선 또는 무선 인터페이스 121A ~ 121H : 컨트롤러
122A, 122B, 122E, 122F, 122G, 122H : 휘발성 메모리
122C, 122D, 123E, 123F, 123G, 123H : 비휘발성 메모리
1200 : RAM 1300 : 입출력 장치
1500 : 전원 장치
Claims (10)
- 호스트의 프로세서에서 페이지 폴트가 발생된 프로세스에 대한 정보를 제1저장 수단에 기입하는 단계;
상기 페이지 폴트가 발생된 페이지를 스왑 메모리로 인식된 메모리 장치로부터 호스트의 메인 메모리에 복사하는 단계; 및
상기 페이지 폴트가 발생된 페이지를 메인 메모리에 복사하는 단계를 마친 후에 상기 제1저장 수단에 저장된 프로세스에 대한 정보를 이용하여 상기 페이지 폴트가 발생된 프로세스 동작을 재개하는 단계를 포함함을 특징으로 하는 메모리 스왑 오퍼레이션 제어 방법. - 제1항에 있어서, 상기 제1저장 수단에 저장되는 프로세스에 대한 정보는 상기 페이지 폴트가 발생된 프로세스 ID 및 상기 페이지 폴트가 발생된 페이지를 상기 스왑 메모리로 인식된 메모리 장치로부터 상기 메인 메모리에 복사하기 위한 리퀘스트 정보를 포함함을 특징으로 하는 메모리 스왑 오퍼레이션 제어 방법.
- 제1항에 있어서, 상기 제1저장 수단에 기입하는 단계는
상기 호스트의 프로세서에서 페이지 폴트가 발생되는지를 판단하는 단계;
상기 페이지 폴트가 발생된 경우에 상기 페이지 폴트가 발생된 프로세스의 실행을 중단하는 단계; 및
상기 페이지 폴트에 의하여 중단된 프로세스에 대한 정보를 상기 제1저장 수단에 기입하는 단계를 포함함을 특징으로 하는 메모리 스왑 오퍼레이션 제어 방법. - 제1항에 있어서, 상기 메인 메모리에 복사하는 단계는 다이렉트 메모리 액세스에 기초하여 상기 스왑 메모리로 인식된 메모리 장치로부터 페이지 폴트가 발생된 페이지를 읽어내고, 상기 읽어낸 페이지 폴트가 발생된 페이지를 상기 메인 메모리에 기입하는 것을 특징으로 하는 메모리 스왑 오퍼레이션 제어 방법.
- 제1항에 있어서, 상기 메인 메모리에 복사하는 단계는 상기 메인 메모리에 상기 페이지 폴트가 발생된 페이지를 기입할 저장 공간이 남아 있는지 않은 경우에, 상기 메인 메모리에 저장되어 있는 적어도 하나의 페이지를 상기 스왑 메모리로 인식된 메모리 장치에 기입하고 나서 상기 페이지 폴트가 발생된 페이지를 다이렉트 메모리 액세스 오퍼레이션에 기초하여 상기 스왑 메모리로 인식된 메모리 장치로부터 읽어내어 상기 메인 메모리에 기입하는 것을 특징으로 하는 메모리 스왑 오퍼레이션 제어 방법.
- 제1항에 있어서, 상기 호스트의 프로세서는 상기 호스트에 접속된 적어도 하나의 메모리 장치를 오퍼레이팅 시스템에 의하여 스왑 메모리로 인식하는 것을 특징으로 하는 메모리 스왑 오퍼레이션 제어 방법.
- 제1항에 있어서, 상기 페이지 폴트가 발생된 프로세스 동작을 재개하는 단계는 상기 페이지 폴트가 발생된 페이지를 메인 메모리에 복사하는 동작이 완료될 때 상기 제1저장 수단에 저장된 프로세스가 지시하는 프로세스를 웨이크 업 처리하는 것을 특징으로 하는 메모리 스왑 오퍼레이션 제어 방법.
- 입력 정보에 기초한 데이터 처리를 수행하고, 페이지 폴트가 발생되는 경우에 스왑 애플리케이션 프로그램 인터페이스를 구동시키는 프로세서; 및
상기 프로세서와 데이터를 교환하는 메인 메모리를 포함하고,
상기 스왑 애플리케이션 프로그램 인터페이스는 페이지 폴트가 발생된 프로세스에 대한 정보를 제1저장 영역에 저장하는 제1오퍼레이션, 스왑 메모리로 인식되는 메모리 장치에 저장된 상기 페이지 폴트가 발생된 페이지를 다이렉트 메모리 액세스 프로세스에 따라서 메인 메모리에 복사하는 제2오퍼레이션 및 상기 제2오퍼레이션이 완료될 때 상기 제1저장 영역에 저장된 프로세스에 대한 정보를 이용하여 상기 페이지 폴트가 발생된 프로세스 동작을 재개하는 제3오퍼레이션을 순차적으로 수행하는 것을 특징으로 하는 데이터 처리 시스템. - 제8항에 있어서, 상기 스왑 메모리로 인식되는 메모리 장치는 상기 프로세서에 접속되는 휘발성 메모리 장치 및 비휘발성 메모리 장치 중 적어도 하나를 포함하는 것을 특징으로 하는 데이터 처리 시스템.
- 제8항에 있어서, 상기 제3오퍼레이션은 상기 페이지 폴트가 발생된 페이지를 메인 메모리에 복사하는 동작이 완료될 때 오퍼레이팅 시스템에 의하여 상기 제1저장 영역에 저장된 프로세스가 지시하는 프로세스를 웨이크 업 처리하는 것을 특징으로 하는 데이터 처리 시스템.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140028269A KR102116984B1 (ko) | 2014-03-11 | 2014-03-11 | 메모리 스왑 오퍼레이션 제어 방법 및 이를 적용하는 데이터 처리 시스템 |
US14/637,955 US9934100B2 (en) | 2014-03-11 | 2015-03-04 | Method of controlling memory swap operation and data processing system using same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140028269A KR102116984B1 (ko) | 2014-03-11 | 2014-03-11 | 메모리 스왑 오퍼레이션 제어 방법 및 이를 적용하는 데이터 처리 시스템 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150106144A true KR20150106144A (ko) | 2015-09-21 |
KR102116984B1 KR102116984B1 (ko) | 2020-05-29 |
Family
ID=54069010
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140028269A KR102116984B1 (ko) | 2014-03-11 | 2014-03-11 | 메모리 스왑 오퍼레이션 제어 방법 및 이를 적용하는 데이터 처리 시스템 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9934100B2 (ko) |
KR (1) | KR102116984B1 (ko) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9772962B2 (en) | 2015-05-28 | 2017-09-26 | Red Hat Israel, Ltd. | Memory sharing for direct memory access by a device assigned to a guest operating system |
US9720846B2 (en) * | 2015-05-28 | 2017-08-01 | Red Hat Israel, Ltd. | Memory swap for direct memory access by a device assigned to a guest operating system |
KR20180044095A (ko) | 2016-10-21 | 2018-05-02 | 삼성전자주식회사 | 전자 시스템 및 그것의 동작 방법 |
KR20180078512A (ko) * | 2016-12-30 | 2018-07-10 | 삼성전자주식회사 | 반도체 장치 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0713789A (ja) * | 1988-12-09 | 1995-01-17 | Tandem Comput Inc | フォールトトレラントコンピュータにおけるメモリ管理システム |
WO2008099786A1 (ja) * | 2007-02-13 | 2008-08-21 | Nec Corporation | メモリ障害復旧方法、情報処理装置およびプログラム |
JP2010134584A (ja) * | 2008-12-03 | 2010-06-17 | Nec Corp | メモリ管理装置、メモリ管理方法およびプログラム |
KR20120066198A (ko) * | 2010-12-14 | 2012-06-22 | 삼성전자주식회사 | 휘발성 메모리를 포함하는 저장 장치의 데이터 저장 방법 |
US20130219399A1 (en) * | 2005-06-30 | 2013-08-22 | Hong Wang | Mechanism for instruction set based thread execution of a plurality of instruction sequencers |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101134789B1 (ko) | 2005-05-09 | 2012-04-13 | 엘지전자 주식회사 | 휴대용 컴퓨터 및 그 제어방법 |
JP2008217208A (ja) | 2007-03-01 | 2008-09-18 | Sony Corp | 記憶装置およびコンピュータシステム、並びに記憶装置の管理方法 |
WO2009031065A1 (en) | 2007-09-03 | 2009-03-12 | Nxp B.V. | Mobile communication device and method for swapping mifare applications |
US8214845B2 (en) * | 2008-05-09 | 2012-07-03 | International Business Machines Corporation | Context switching in a network on chip by thread saving and restoring pointers to memory arrays containing valid message data |
KR101612922B1 (ko) | 2009-06-09 | 2016-04-15 | 삼성전자주식회사 | 메모리 시스템 및 메모리 시스템 관리 방법 |
CN101923878A (zh) | 2009-06-17 | 2010-12-22 | 鸿富锦精密工业(深圳)有限公司 | 数据存储控制系统及方法 |
WO2011002436A1 (en) * | 2009-06-29 | 2011-01-06 | Hewlett-Packard Development Company, L.P. | Hypervisor-based management of local and remote virtual memory pages |
JP2011095885A (ja) | 2009-10-28 | 2011-05-12 | Sharp Corp | ページング方式を備えた装置、ページング方式の処理方法 |
US8645611B2 (en) | 2010-03-31 | 2014-02-04 | Intel Corporation | Hot-swapping active memory for virtual machines with directed I/O |
US8423740B2 (en) | 2011-02-01 | 2013-04-16 | Wind River Systems, Inc. | System and method for fast boot from non-volatile memory |
KR20120112965A (ko) | 2011-04-04 | 2012-10-12 | 삼성전자주식회사 | 비휘발성 메모리 장치, 이를 스왑 메모리로 이용하는 데이터 처리 장치, 및 이를 이용한 스왑 방법 |
US8996787B2 (en) | 2012-02-06 | 2015-03-31 | Sandisk Technologies Inc. | Storage device aware of I/O transaction and stored data |
-
2014
- 2014-03-11 KR KR1020140028269A patent/KR102116984B1/ko active IP Right Grant
-
2015
- 2015-03-04 US US14/637,955 patent/US9934100B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0713789A (ja) * | 1988-12-09 | 1995-01-17 | Tandem Comput Inc | フォールトトレラントコンピュータにおけるメモリ管理システム |
US20130219399A1 (en) * | 2005-06-30 | 2013-08-22 | Hong Wang | Mechanism for instruction set based thread execution of a plurality of instruction sequencers |
WO2008099786A1 (ja) * | 2007-02-13 | 2008-08-21 | Nec Corporation | メモリ障害復旧方法、情報処理装置およびプログラム |
JP2010134584A (ja) * | 2008-12-03 | 2010-06-17 | Nec Corp | メモリ管理装置、メモリ管理方法およびプログラム |
KR20120066198A (ko) * | 2010-12-14 | 2012-06-22 | 삼성전자주식회사 | 휘발성 메모리를 포함하는 저장 장치의 데이터 저장 방법 |
Also Published As
Publication number | Publication date |
---|---|
US9934100B2 (en) | 2018-04-03 |
KR102116984B1 (ko) | 2020-05-29 |
US20150261616A1 (en) | 2015-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9665296B2 (en) | Method and computing device for using both volatile memory and non-volatile swap memory to pre-load a plurality of applications | |
KR101719092B1 (ko) | 하이브리드 메모리 디바이스 | |
US9274983B2 (en) | Memory systems including nonvolatile buffering and methods of operating the same | |
TWI750176B (zh) | 對記憶體通道執行軟體調訓的電子裝置、其記憶體通道調訓方法及其系統 | |
US9753771B2 (en) | System-on-chip including multi-core processor and thread scheduling method thereof | |
US9710198B2 (en) | Method and computing device for controlling bandwidth of swap operations | |
US9633233B2 (en) | Method and computing device for encrypting data stored in swap memory | |
US8930732B2 (en) | Fast speed computer system power-on and power-off method | |
US20210141555A1 (en) | Method and apparatus for presearching stored data | |
JP2017519294A (ja) | フラッシュメモリベースストレージデバイスのマルチホスト電力コントローラ(mhpc) | |
US9575887B2 (en) | Memory device, information-processing device and information-processing method | |
JP2007507776A (ja) | コンピュータ装置におけるデフラグを用いたメモリ管理 | |
EP2771785A1 (en) | Load boot data | |
KR102116984B1 (ko) | 메모리 스왑 오퍼레이션 제어 방법 및 이를 적용하는 데이터 처리 시스템 | |
US20210224213A1 (en) | Techniques for near data acceleration for a multi-core architecture | |
US8433873B2 (en) | Disposition instructions for extended access commands | |
CN110597742A (zh) | 用于具有持久系统存储器的计算机系统的改进存储模型 | |
CN107562645A (zh) | 一种内存页管理方法及计算设备 | |
CN110647359A (zh) | 半导体装置、其操作方法和具有其的层叠存储装置 | |
CN112486870A (zh) | 计算机系统及计算机系统控制方法 | |
US20150324132A1 (en) | Method and Computing Device for Fast Erase of Swap Memory | |
KR20110078171A (ko) | 부팅가능한 휘발성 메모리 장치와 그를 구비한 메모리 모듈 및 프로세싱 시스템, 및 그를 이용한 프로세싱 시스템 부팅 방법 | |
US11106559B2 (en) | Memory controller and memory system including the memory controller | |
US20170153994A1 (en) | Mass storage region with ram-disk access and dma access | |
KR102254101B1 (ko) | 데이터 처리 시스템 및 이의 동작 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |