KR20110052902A - 컴퓨팅 시스템 및 컴퓨팅 시스템의 메모리 관리 방법 - Google Patents

컴퓨팅 시스템 및 컴퓨팅 시스템의 메모리 관리 방법 Download PDF

Info

Publication number
KR20110052902A
KR20110052902A KR1020090109633A KR20090109633A KR20110052902A KR 20110052902 A KR20110052902 A KR 20110052902A KR 1020090109633 A KR1020090109633 A KR 1020090109633A KR 20090109633 A KR20090109633 A KR 20090109633A KR 20110052902 A KR20110052902 A KR 20110052902A
Authority
KR
South Korea
Prior art keywords
memory
data
task
pointer
processor
Prior art date
Application number
KR1020090109633A
Other languages
English (en)
Other versions
KR101590764B1 (ko
Inventor
이재돈
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020090109633A priority Critical patent/KR101590764B1/ko
Priority to US12/923,868 priority patent/US8478956B2/en
Publication of KR20110052902A publication Critical patent/KR20110052902A/ko
Application granted granted Critical
Publication of KR101590764B1 publication Critical patent/KR101590764B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/251Local memory within processor subsystem
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/253Centralized memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Retry When Errors Occur (AREA)

Abstract

컴퓨팅 시스템이 제공된다. 상기 컴퓨팅 시스템은 오버레이 기법을 이용하여 내부 메모리의 태스크를 외부 메모리로 백업하고, 반대로 외부 메모리의 태스크를 내부 메모리로 복원할 수 있다. 상기 컴퓨팅 시스템은, 프로세서에서 처리되는 제1 태스크에 연관된 데이터를 제1 데이터 구조로 저장하는 제1 메모리, 상기 제1 태스크에 연관된 데이터의 백업 데이터를 저장하는 제2 메모리, 및 상기 프로세서에서 제2 태스크를 처리하기 위해 상기 제1 태스크에 연관된 데이터를 상기 제2 메모리에 백업하는 경우, 상기 제1 태스크에 연관된 데이터 중 이전에 상기 제2 메모리에 백업되지 않았던 데이터를 상기 제2 메모리에 복사하는 메모리 컨트롤러를 포함할 수 있다.
멀티 태스킹, 컴퓨터 시스템, 오버레이, computer system, multi-tasking, overlay

Description

컴퓨팅 시스템 및 컴퓨팅 시스템의 메모리 관리 방법{COMPUTING SYSTEM AND METHOD FOR CONTROLING MEMORY OF COMPUTING SYSTEM}
계층적 메모리 구조를 갖는 컴퓨팅 시스템에 연관되며, 보다 특정하게는 계층적 메모리 구조 내에서 내부 메모리와 외부 메모리 간의 태스크 백업 또는 태스크 복원의 효율을 높이는 메모리 관리 방법에 연관된다.
컴퓨터 시스템은 일반적으로 계층적인 메모리 배치 구조를 갖는다.
이러한 계층적 메모리 배치 구조에서, 프로세서(Processor)에 가까운 메모리, 이를테면 레지스터(Register) 또는 캐시(Cache) 등은 액세스 속도가 높다. 그런데 이러한 메모리는 상대적으로 가격이 비싸기 때문에 작은 용량만 선택된다. 이러한 메모리는 프로세서 내부에 배치되기도 하기 때문에 내부 메모리(Internal memory)라고도 불린다.
한편 프로세서에서 먼 메모리, 이를 테면 메인 메모리인 RAM(Random Access Memory) 등은 액세스 속도가 낮다. 그러나, 상대적으로 가격이 싸기 때문에 비교적 큰 용량이 선택된다. 이러한 대용량 메모리는 프로세서 외부에 배치되기 때문에 외부 메모리(External memory)라고도 불린다.
따라서, 계층적인 메모리 배치 구조를 갖는 컴퓨팅 시스템에 있어서, 내부 메모리를 크게 하고 많이 활용할수록 연산 속도는 빠르지만, 시스템 구현을 위한 비용이 높아지므로, 비교적 적은 크기의 내부 메모리를 효율적으로 사용하는 방법이 요구된다.
한편, 최근 임베디드 시스템(Embedded system)에서는 프로세서 내부에 스크래치 패드 메모리라는 빠른 처리 속도의 내부 메모리를 두어서 데이터를 처리하고 있다.
이러한 스크래치 패드 메모리를 효율적으로 사용하기 위해, 임베디드 시스템들은 외부 메모리의 일부를 내부 메모리와 함께 사용하는 virtual memory 기법 대신, 스크래치 패드 메모리를 복수의 태스크(Task)에 활용하는 오버레이(Overlay) 기법을 이용하고 있다.
상대적으로 작은 크기의 내부 메모리를 공유하기 위해 오버레이 기법을 사용하는 경우, 태스크의 스택 영역을 효율적으로 관리하는 메모리 관리 방법 및 컴퓨팅 시스템이 제공된다.
오버레이 기법을 위해 내부 메모리의 태스크를 외부 메모리로 백업하고, 반대로 외부 메모리의 태스크를 내부 메모리로 복원하는 경우, 카피 오버헤드(copy overhead)를 최소화하는 메모리 관리 방법 및 컴퓨팅 시스템이 제공된다.
본 발명의 일측에 따르면, 프로세서에서 처리되는 제1 태스크에 연관된 데이터를 제1 데이터 구조로 저장하는 제1 메모리, 상기 제1 태스크에 연관된 데이터의 백업 데이터를 저장하는 제2 메모리, 및 상기 프로세서에서 제2 태스크를 처리하기 위해 상기 제1 태스크에 연관된 데이터를 상기 제2 메모리에 백업하는 경우, 상기 제1 태스크에 연관된 데이터 중 이전에 상기 제2 메모리에 백업되지 않았던 데이터를 상기 제2 메모리에 복사하는 메모리 컨트롤러를 포함하는 컴퓨팅 시스템이 제공된다.
이 경우, 상기 제1 메모리는 상기 프로세서의 내부 메모리(internal memory), 이를테면, 상기 제1 메모리는 스크래치 패드 메모리(Scratch Pad Memory)이고, 상기 제2 메모리는 상기 프로세서의 외부 메모리(external memory)일 수 있다.
그리고, 상기 제1 데이터 구조는, 스택(Stack)일 수 있다.
본 발명의 일 실시예에 따르면, 상기 메모리 컨트롤러는, 상기 프로세서에서 상기 제1 태스크를 처리하는 경우, 상기 스택 내의 데이터의 탑(top) 어드레스를 가리키는 제1 포인터 및 상기 스택 내의 데이터 중 이전에 상기 제2 메모리에 백업되지 않았던 부분의 바닥(bottom)을 가리키는 제2 포인터를 저장하고, 상기 프로세서에서 제2 태스크를 처리하기 위해 상기 제1 태스크에 연관된 데이터를 상기 제2 메모리에 백업하는 경우, 제1 포인터에 대응하는 주소와 상기 제2 포인터에 대응하는 주소 사이에 저장된 데이터를 상기 제2 메모리로 복사한다.
이 경우, 상기 메모리 컨트롤러는, 상기 제2 포인터를 상기 컴퓨팅 시스템 의 태스크 컨트롤 블록(TCB: Task Control Block) 내에 저장하여 관리할 수 있다.
또한, 상기 메모리 컨트롤러는, 상기 제2 포인터를 상기 컴퓨팅 시스템의 범용 레지스터에 저장하여 관리할 수도 있다.
한편, 상기 컴퓨팅 시스템은, 상기 제2 포인터를 저장하는 전용 레지스터를 더 포함할 수 있고, 이 경우, 상기 메모리 컨트롤러는, 상기 제2 포인터를 상기 전용 레지스터에 저장하여 관리한다.
본 발명의 다른 일측에 따르면, 높은 속도의 데이터 액세스가 가능하여, 프로세서의 태스크 처리를 보조하는 제1 메모리, 상기 제1 메모리보다 낮은 속도의 데이터 액세스가 가능하여, 상기 제1 메모리의 데이터를 백업하는 제2 메모리, 및 오버레이(Overlay) 기법을 이용하여, 상기 프로세서에서 처리되는 제1 태스크를 제2 태스크로 변경하는 경우, 상기 제1 메모리에 저장된 상기 제1 태스크에 연관된 데이터 중 이전에 상기 제2 메모리에 백업되지 않은 데이터를 상기 제2 메모리로 복사하는 메모리 컨트롤러를 포함하는, 컴퓨팅 시스템이 제공된다.
본 발명의 또 다른 일측에 따르면, 프로세서에서 처리되는 태스크를 제1 태스크로부터 제2 태스크로 교체하는 태스크 오버레이 명령을 수신하는 단계, 상기 프로세서의 태스크 처리를 보조하는 제1 메모리에 저장된 상기 제1 태스크에 연관된 데이터 중, 상기 제1 메모리의 데이터를 백업하는 제2 메모리에 이전에 백업되지 않았던 데이터를 식별하는 단계, 및 상기 식별된 데이터를 상기 제2 메모리에 복사하여 상기 제1 태스크에 연관된 데이터를 상기 제2 메모리에 백업하는 단계를 포함하는, 메모리 관리 방법이 제공된다.
본 발명의 실시예들에 따르면, Overlay 기법을 위해 내부 메모리의 태스크를 외부 메모리로 백업하고, 반대로 외부 메모리의 태스크를 내부 메모리로 복원하는 경우, 카피 오버헤드가 최소화 된다.
따라서, 최소한의 비용을 통해 컴퓨팅 시스템 내의 계층적 메모리 구조를 구현하면서도, 메모리 관리의 효율을 높여 태스크(task)의 처리 속도를 최대화 할 수 있다.
이하에서, 본 발명의 일부 실시예를, 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 일 실시예에 따른 컴퓨팅 시스템(100)을 도시한다.
컴퓨팅 시스템(100)은 데스크톱 컴퓨터(Desktop computer), 랩톱 컴퓨터(Laptop computer), 임베디드 시스템(embedded system) 등일 수 있다. 그러나, 이러한 것을 본 발명의 일부 실시예에 불과하며, 상기 컴퓨팅 시스템(100)은 전기적으로 연산을 수행하는 어떤 형태의 기기일 수도 있다.
컴퓨팅 시스템(100) 내에서는 일정한 스케줄에 따라 태스크(Task)들이 처리되며, 이러한 처리는 프로세서(process)(101), 이를테면 CPU(Central Processing Unit)에 의해 수행된다.
상기한 바와 같이, 프로세서(101)의 연산을 위해서는 태스크에 연관된 데이터를 저장하는 메모리가 필요하다. 이러한 메모리는 데이터 액세스 속도가 높은 것일수록 가격이 비싸다.
따라서, 통상적인 컴퓨팅 시스템에는 계층형 메모리 구조를 채택하여, 프로세서(101)에 가까운 곳에는 데이터 액세스 속도가 높고 용량이 작은 메모리를 선택하고, 반대로 프로세서(101)로부터 먼 곳에는 데이터 액세스 속도가 낮고 용량이 큰 메모리를 선택한다.
이를 테면, 레지스터(Register), 캐시(Cache)와 같이 데이터 액세스 속도가 높은 메모리는, 프로세서 내의 내부 메모리(Internal memory)(110)로서 활용될 수 있다. 그리고, 시스템의 메인 메모리로 사용되는 RAM(Random Access Memory)와 같이 데이터 액세스 속도가 낮지만 비교적 가격이 낮아서 대용량으로 선택될 수 있는 메모리는, 외부 메모리(External memory)(120)로서 활용될 수 있다.
특히, 요즈음 각종 정보 기기로 활용되는 임베디드 시스템의 경우, 상기 내부 메모리(101)가 스크래치 패드 메모리일 수 있다.
이하에서는 내부 메모리(110)을 제1 메모리, 외부 메모리(120)를 제2 메모리로 지칭할 수도 있다.
멀티 태스킹(Multi Tasking) 환경에서, 프로세서(101)에 입력되는 인터럽트 요청(interrupt request) 또는 미리 지정된 태스크 스케줄에 따라, 제1 태스크가 처리되는 중에 이를 멈추고 제2 태스크를 처리하는 경우가 있다.
본 발명의 일 실시예에 따르면, 이렇게 프로세서(101) 내에서 처리되는 태스크를 바꾸는 경우, 컴퓨팅 시스템(100)은 오버레이(overlay) 기법을 사용한다. 오버레이 기법에서는, 태스크 교체 시에 내부 메모리(110)에 저장되어 있던 제1 태 스크에 연관된 데이터가 외부 메모리(120)로 백업되고, 외부 메모리(120)에 저장되어 있던 제2 태스크에 연관된 데이터가 내부 메모리(110)로 복원(restore)된다.
이 경우, 내부 메모리(110)에 저장되어 있던 제1 태스크에 연관된 데이터를 외부 메모리(120)로 복사하는 카피 오버헤드(copy overhead)를 줄일 수 있다면 전체 연산 속도가 높아질 수 있다.
본 발명의 일 실시예에 따르면, 상기 프로세서(101) 내에서 제1 태스크가 처리되던 중 어떤 이유에 의해서 제2 태스크로 태스크 교체 명령이 수신되는 경우, 메모리 컨트롤러(130)는 내부 메모리(110)에 저장되어 있는 제1 태스크에 연관된 데이터 중, 외부 메모리(120)에 백업되어 있고 변경된 바 없는 데이터는 제외하고, 백업되어 있지 않거나, 또는 새로인 변경되어 예전의 백업 데이터가 유효하지 않은 데이터만을 외부 메모리(120)에 백업한다.
이를 테면, 상기 내부 메모리(110)에 상기 제1 태스크에 연관된 데이터가 스택(Stack) 구조로서 저장되어 있을 수 있다.
데이터 구조 중, 스택에 가장 나중에 푸시(push) 된 데이터가 가장 먼저 팝(pop) 되는, Last In First Out 정책을 따른다. 그리고, 가장 최근에 푸시 된 데이터를 스택 탑(Stack top)이라 하고, 가장 오래 전에 푸시 된 데이터를 스택 바톰(Stack bottom)이라고 한다.
그리고, 이 스택 탑은 스택 포인터 SP(Stack Pointer)에 의해 특정된다.
본 발명의 일 실시예에 따르면, 현재 프로세서(101) 내에서 처리중인 제1 태스크를 처리하기 전에, 메모리 컨트롤러(130)는 외부 메모리(120)에 스택 구조로 서 백업되어 있던 상기 제1 태스크에 연관된 데이터를, 내부 메모리(110)로 복원한다. 물론, 내부 메모리(110)로 복원된 데이터 역시 스택 구조로서 저장된다.
그리고, 프로세서(101) 내에서 상기 제1 태스크가 처리되는 경우, 상기 스택으로부터 일부의 데이터는 팝 아웃(pop out) 되기도 하고, 또 새로운 데이터가 푸시 인(push in) 되기도 한다.
따라서, 시간의 경과에 따라, 상기 복원 시점부터 현재까지 외부 메모리(120) 내의 어느 영역에 남아 있어온 상기 제1 태스크에 연관된 백업 데이터의 적어도 일부는 무효 데이터(Invalid data)이다.
본 발명의 일 실시예에 따르면, 메모리 컨트롤러(130)는 상기 제1 태스크가 프로세서(110) 내에서 처리되는 동안, 상기 스택 포인터 SP 외에 스택 바톰 유시지 포인터 SBUP(Stack Bottom Usage Pointer)를 저장하여 관리한다.
상기 SP는 현재 스택 내의 데이터 중 가장 최근에 푸시 인 된 데이터의 어드레스를 가리키고, 상기 SBUP는 상기 복원 이후 아직 한 번도 팝 아웃 되지 않은 데이터 중 가장 높은 데이터의 어드레스를 가리킨다.
보다 상세한 설명은 도 2를 참조하여 후술한다.
그리고, 이하에서 상기 SP는 제1 포인터라고 지칭하고, 상기 SBUP는 제2 포인터라고 지칭하기도 한다.
한편, 프로세서(101)에 태스크 교체 명령이 수신되는 경우, 내부 메모리(110)에 저장된 상기 제1 태스크에 연관된 최근의 데이터가 외부 메모리(120)의 상기 영역에 다시 백업되어야 한다.
이 경우, 본 발명의 일 실시예에 따르면, 메모리 컨트롤러(130)는 상기 스택 내의 전체 데이터를 외부 메모리(120)로 복사하지 않고, 상기 SP가 가리키는 어드레스와 상기 SBUP가 가리키는 어드레스 사이의 영역에 저장된 데이터만을 상기 외부 메모리(120)로 복사한다.
이 과정에서 복사되지 않는 데이터, 즉 스택의 바톰(Stack bottom)부터 상기 SBUP가 가리키는 어드레스까지의 영역에 저장된 데이터는, 상기 복원 시점부터 현재까지 외부 메모리에 저장된 데이터와 동일하기 때문에, 다시 복사할 필요가 없다.
따라서, 상기 실시예에 따르면, 태스크 교체를 위한 오버레이 기법에서 데이터 카피 오버헤드가 크게 줄어들 수 있다.
컴퓨팅 시스템(100)의 구체적인 동작은 도 2 이하를 참조하여 후술한다.
도 2는 본 발명의 일 실시예에 따른 상기 도 1의 내부 메모리(110)를 도시한다.
내부 메모리(110) 내에는 RO(읽기 전용, Read Only) 영역(210), RW(읽기 쓰기, Read Write) 영역(220), 힙(Heap) 영역(230) 및 스택 영역(240)이 포함된다.
상기 RO 영역(210)은 읽기는 가능하나 쓰기는 불가능한 데이터를 저장하고 있는 영역이다. 이 RO 영역(210)은 태스크 처리 과정에서 변경되지 않으므로, 한 번만 외부 메모리(120)에 백업되어 있으면 그 이후에는 백업될 필요가 없다.
그리고 상기 RW 영역(220)은 읽기 쓰기가 모두 가능한 데이터를 저장하고 있는 영역이다. 따라서, 이 RW 영역(220)은 태스크 처리 과정에서 변경되므로, 외 부 메모리(120)에 이전에 백업되어 있었던 데이터는 무효 데이터(Invalid data)가 된다. 그러므로 태스크 교체를 위해 내부 메모리(110)로부터 외부 메모리(120)로 데이터가 백업되는 경우에 다시 복사되어야 하는 영역이다.
상기 힙(Heap) 영역(230)은 사용자가 동적으로 할당 받은 데이터 영역인데, 이 역시 태스크 교체 시점에는 복사되어야 하는 영역이다.
한편, 본 발명의 일 실시예에 따르면, 태스크가 프로세서(101)에서 처리되는 경우, 메모리 컨트롤러(130)는, 스택 영역(240)에서 가장 최근에 푸시 인 된 데이터의 어드레스를 가리키는 스택 포인터(Stack Pointer) SP(241)와, 아직 한 번도 팝 아웃 되지 않은 데이터 중 가장 상위의 데이터의 어드레스를 가리키는 스택 바톰 유시지 포인터(Stack Bottom Usage Pointer) SBUP(242)를 저장하여 관리한다.
메모리 컨트롤러(130)는 스택 영역(240)에서 데이터가 팝 아웃 되는 경우, SP(241)를 1만큼 감소시키는데, 이 경우, 작아진 SP(241)가 기존의 SBUP(242)보다 작으면, SBUP(242)를 새로운 SP(241)와 동일한 값으로 갱신한다.
이후에 데이터가 푸시 인 되는 경우, 메모리 컨트롤러(130)는 SP(241)를 1 증가 시키는데, 이 경우에는 SBUP(242)는 변경하지 않는다.
따라서, 임의의 시점에서, SP(241)이 가리키는 어드레스부터, SBUP(242)가 가리키는 어드레스 윗부분까지의 영역(243)에 저장된 데이터는, 기존에 외부 메모리(120)에 백업되어 있던 데이터와 상이한 새로운 데이터이다. 그리고, SBUP(242)가 가리키는 어드레스부터, 스택 바톰까지의 영역(244)에 저장된 데이터는, 기존에 외부 메모리(120)에 백업되어 있던 데이터와 동일하다.
본 발명의 일 실시예에 따르면, 태스크 교체를 위해, 내부 메모리(110)의 스택 영역(240)에 저장된 데이터를 외부 메모리(120)로 백업하는 경우, SP(241)부터 스택 바톰까지의 전체 영역(243 및 244)의 데이터가 아니라, 기존의 백업 데이터와 상이한 새로운 데이터가 있는 영역(243) 내의 데이터만이 외부 메모리(120)로 백업된다.
따라서, 영역(244) 부분에 저장된 데이터에 대한 카피 오버헤드를 줄일 수 있다.
이 과정은 도 3을 참조하여 보다 상세히 후술한다.
도 3은 본 발명의 일 실시예에 따라, 상기 도 1의 내부 메모리(110)로부터 외부 메모리(120)로 제1 태스크가 백업되는 과정을 설명하기 위한 개념도이다.
내부 메모리(110)에 제1 태스크에 연관된 데이터가 저장되어 있다.
이 중에는 RO 영역(210), RW 영역(220), 힙 영역(230), 및 스택 영역(240)이 있다.
이 경우, 메모리 컨트롤러(130)는 스택 탑 포인터 SP(241)뿐만 아니라 스택 바톰 유시지 포인터 SBUP(242)를 함께 저장하여 관리한다.
상기 제1 태스크에 연관된 데이터는 이전에 외부 메모리(120) 내의 제1 영역(300)에 백업되어 있다가 내부 메모리(110)로 복원된 것이다.
그리고 상기 복원 시점 이후에 제1 태스크가 프로세서(101)에 의해 처리되는 과정에서 RW 영역(220), 힙 영역(230) 및 영역(243) 내의 데이터는 변경되었고, RO 영역(210) 및 영역(244) 내의 데이터는 변경되지 않았다.
이 때, 상기 프로세서(101) 내에서 처리될 태스크를 제1 태스크로부터 제2 태스크로 변경하는 명령이 수신되고, 내부 메모리(110) 내의 상기 제1 태스크에 연관된 데이터가 외부 메모리(120)로 백업된다.
RW 영역(220)의 데이터는 RW 영역(320)에, 힙 영역(230)의 데이터는 힙 영역(330)에, 영역(243)의 데이터는 영역(341)에 각각 복사된다.
RO 영역(210)의 데이터는 이미 RO 영역(310)에 백업되어 있고, 변경이 없으므로 백업되지 않는다. 또한, 영역(244)의 데이터 역시 영역(342)에 백업되어 있고, 변경이 없으므로 백업되지 않는다.
이렇게 제1 태스크에 연관된 데이터를 내부 메모리(110)로부터 외부 메모리(120)의 영역(300)에 백업한 이후에, 외부 메모리(120) 내의 제2 태스크에 연관된 데이터가 영역(301)로부터 내부 메모리(110)로 복원(restore)된다. 이 과정은 하기 도 4를 참조하여 상술한다.
도 4는 본 발명의 일 실시예에 따라, 상기 도 1의 외부 메모리(120)로부터 내부 메모리(110)로 제2 태스크가 복원되는 과정을 설명하기 위한 개념도이다.
제2 태스크에 연관된 데이터를 저장한 영역(301) 내의 RO 영역(410)의 데이터는 RO 영역(210)에, RW 영역(420)의 데이터는 RW 영역(220)에, 힙 영역(430)의 데이터는 힙 영역(230)에, 그리고, 스택 영역(440) 내의 데이터가 저장된 영역(450)의 데이터는 스택 영역(240) 내의 영역(401)에 각각 복사된다.
그리고, 이 경우, 영역(401) 내의 데이터 중 가장 먼저 팝 아웃 되어야 할 데이터에 대응하는 어드레스, 즉 스택 탑의 어드레스를 SP(241) 및 SBUP(242)로서 저장한다.
그 이후 스택 영역(240)에서 데이터가 팝 아웃 되는 경우, 메모리 컨트롤러(130)는 SP(241)를 감소 시킨다. 이 경우, SP(241)가 SBUP(242)보다 작으므로, 메모리 컨트롤러(130)는, SBUP(242)를 상기 감소된 SP(241)로 갱신한다.
그리고, 반대로 스택 영역(240)으로 데이터가 푸시 인 되는 경우, 메모리 컨트롤러(130)는 SP(241)를 증가 시킨다. 이 경우에는 SBUP(242)는 변경되지 않는다.
메모리 컨트롤러가 SP(241) 및 SBUP(242)를 저장하여 관리하는 구체적인 방법은 도 5 내지 도 7을 참조하여 보다 상세히 후술한다.
도 5는 본 발명의 일 실시예에 따른 컴퓨팅 시스템(100)에서 컴파일러의 동작을 설명하기 위한 개념도이다.
본 발명의 일 실시예에 따른 컴퓨팅 시스템(100)에서 고급 언어로 기술된 함수(501)가 컴파일 되면, 기계어 코드(502)가 생성된다.
통상적인 컴퓨팅 시스템에서 함수가 컴파일 되는 경우, 스택 프레임(stack frame)을 스택에 푸시 하고, 함수가 처리할 연산을 수행하고 나서, 스택 프레임을 스택으로부터 팝 한 후 이전 함수로 리턴하는 기계어 코드가 생성된다.
그런데, 본 발명의 일 실시예에 따른 컴퓨팅 시스템에서 함수가 컴파일 되는 경우, 스택 프레임을 스택으로부터 팝 아웃 하는 경우, 스택 바톰 유시지 포인터와 SP 중 작은 값을 현재의 스택 바톰 유시지 포인터로 저장하는 코드(510)가 추가된다.
이 경우, 통상적인 컴퓨팅 시스템과 비교하여 하드웨어 구성의 변경 없이, 태스크 컨트롤 블록(Task Control Block) TCB에 스택 사용 영역 정보를 기록하도록 구성된다.
도 6은 본 발명의 다른 일 실시예에 따른 컴퓨팅 시스템(100)에서 컴파일러의 동작을 설명하기 위한 개념도이다.
상기 도 5의 실시예에서와 유사하게 함수(601)가 컴파일 되는 경우, 스택 프레임을 스택으로부터 팝 아웃 하는 경우, 스택 바톰 유시지 포인터와 SP 중 작은 값을 현재의 스택 바톰 유시지 포인터 SBUP로 저장하는 코드(610)가 추가된 기계어 코드(602)가 생성된다.
이 경우, 스택의 사용 영역에 관한 SP 및 SBUP가 기존의 범용 레지스터 중 할당된 일부에 저장되며, 이 경우 컴퓨팅 시스템의 메모리 컨트롤러(130)는 상기 할당된 일부가 다른 용도로 사용되지 않도록 관리한다.
도 7은 본 발명의 또 다른 일 실시예에 따른 컴퓨팅 시스템(100)에서 스택 팝의 마이크로 코드를 도시한다.
본 실시예에서는 스택 팝 명령을 위한 마이크로 코드(602)가 통상의 마이크로 코드로부터 수정되었다. 이 경우, 스택 팝 명령이 수행될 때마다, 현재의 SP와 SBUP를 비교하여 더 작은 값을 새로운 SBUP 값으로 갱신하는 코드(610)가 추가되었다.
이 실시예에 따르면, 컴퓨팅 시스템의 컴파일러는 수정되지 않아도 된다.
도 8은 본 발명의 일 실시예에 따른 메모리 관리 방법을 도시한다.
단계(S810)에서 도 1의 프로세서(101)에서 처리될 태스크의 교체 명령이 수신된다. 상기한 바와 같이, 상기 태스크 교체 명령은 미리 주어진 태스크 스케줄에 의한 것일 수도 있고, 또는 인터럽트 요청에 의한 것일 수도 있다. 물론 다른 어떤 이유에 의한 태스크 교체 명령도 배제되지 않는다. 이러한 태스크 교체 명령은 내부 메모리(110)에 대한 태스크 오버레이 명령으로 이해될 수도 있다.
그리고, 단계(S820)에서 현재 스택의 제1 포인터 SP 및 제2 포인터 SBUP가 식별된다. 이 경우, 상기 SP 및 상기 SBUP의 정보가 저장될 수 있는 다양한 실시예는 도 5 내지 도 7을 참조하여 상술한 바와 같다.
그러면 단계(S830)에서, 상기 SP가 가리키는 어드레스와 상기 SBUP가 가리키는 어드레스 다음의 어드레스까지의 데이터가, 이전에 외부 메모리(120)에 백업되지 않았던 데이터 부분으로서 식별된다. 이렇게 식별된 데이터 부분은 도 3의 영역(243)에 대응된다.
그리고 단계(S840)에서 상기 영역(243)의 데이터가 외부 메모리(120)의 영역(341)로 복사된다. 이 경우, 영역(244)의 데이터가 영역(342)로 복사되는 과정이 생략되므로, 카피 오버헤드가 크게 줄어들 수 있음은, 도 3을 참조하여 상술한 바와 같다.
상기 과정을 통해 제1 태스크가 외부 메모리(120)로 백업되면, 단계(S850)에서, 제2 태스크에 연관된 데이터가 복원된다. 이 경우, 도 4의 영역(450)의 데이터가 영역(242)에 복사된다. 보다 상세한 내용은 도 4를 참조하여 상술한 바와 같다.
그리고, 제2 태스크가 프로세서(101) 내에서 처리되는 동안, 메모리 컨트롤러는 상술한 내용, 이를테면 도 5 내지 도 7을 참조하여 상술한 실시예들에 의해 상기 제2 태스크에 연관된 스택 구조의 데이터에 대하여, SP(제3 포인터) 및 SBUP(제4 포인터)를 관리한다.
이러한 과정을 통해 제2 태스크가 처리되는 동안 제2 태스크가 이전에 외부 메모리(120)의 영역(301)에 백업되었다가 복원된 이후 변경된 데이터 영역이 어느 부분인지의 정보, 즉 스택 사용 영역 정보가 저장되는 것이다.
그러면, 추후 다시 제2 태스크에 대해 태스크 교체 명령이 수신되는 경우에도, 변경된 데이터 부분만 복사 함으로써 간단히 데이터 오버레이가 수행될 수 있다.
본 발명의 일 실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
도 1은 본 발명의 일 실시예에 따른 컴퓨팅 시스템을 도시한다.
도 2는 본 발명의 일 실시예에 따른 상기 도 1의 내부 메모리를 도시한다.
도 3은 본 발명의 일 실시예에 따라, 상기 도 1의 내부 메모리로부터 외부 메모리로 태스크가 백업되는 과정을 설명하기 위한 개념도이다.
도 4는 본 발명의 일 실시예에 따라, 상기 도 1의 외부 메모리로부터 내부 메모리로 태스크가 복원되는 과정을 설명하기 위한 개념도이다.
도 5는 본 발명의 일 실시예에 따른 컴퓨팅 시스템에서 컴파일러의 동작을 설명하기 위한 개념도이다.
도 6은 본 발명의 일 실시예에 따른 컴퓨팅 시스템에서 컴파일러의 동작을 설명하기 위한 개념도이다.
도 7은 본 발명의 일 실시예에 따른 컴퓨팅 시스템에서 스택 팝의 마이크로 코드를 도시한다.
도 8은 본 발명의 일 실시예에 따른 메모리 관리 방법을 도시한다.

Claims (17)

  1. 프로세서에서 처리되는 제1 태스크에 연관된 데이터를 제1 데이터 구조로 저장하는 제1 메모리;
    상기 제1 태스크에 연관된 데이터의 백업 데이터를 저장하는 제2 메모리; 및
    상기 프로세서에서 제2 태스크를 처리하기 위해 상기 제1 태스크에 연관된 데이터를 상기 제2 메모리에 백업하는 경우, 상기 제1 태스크에 연관된 데이터 중 이전에 상기 제2 메모리에 백업되지 않았던 데이터를 상기 제2 메모리에 복사하는 메모리 컨트롤러
    를 포함하는 컴퓨팅 시스템.
  2. 제1항에 있어서,
    상기 제1 메모리는 상기 프로세서의 내부 메모리(internal memory)이고, 상기 제2 메모리는 상기 프로세서의 외부 메모리(external memory)인, 컴퓨팅 시스템.
  3. 제2항에 있어서,
    상기 제1 메모리는 스크래치 패드 메모리(Scratch Pad Memory)인, 컴퓨팅 시스템.
  4. 제1항에 있어서,
    상기 제1 데이터 구조는, 스택(Stack)인, 컴퓨팅 시스템.
  5. 제4항에 있어서,
    상기 메모리 컨트롤러는,
    상기 프로세서에서 상기 제1 태스크를 처리하는 경우, 상기 스택 내의 데이터의 탑(top) 어드레스를 가리키는 제1 포인터 및 상기 스택 내의 데이터 중 이전에 상기 제2 메모리에 백업되지 않았던 부분의 바닥(bottom)을 가리키는 제2 포인터를 저장하고,
    상기 프로세서에서 제2 태스크를 처리하기 위해 상기 제1 태스크에 연관된 데이터를 상기 제2 메모리에 백업하는 경우, 제1 포인터에 대응하는 주소와 상기 제2 포인터에 대응하는 주소 사이에 저장된 데이터를 상기 제2 메모리로 복사하는, 컴퓨팅 시스템.
  6. 제5항에 있어서,
    상기 메모리 컨트롤러는, 상기 제2 포인터를 상기 컴퓨팅 시스템의 태스크 컨트롤 블록(TCB: Task Control Block) 내에 저장하여 관리하는, 컴퓨팅 시스템.
  7. 제5항에 있어서,
    상기 메모리 컨트롤러는, 상기 제2 포인터를 상기 컴퓨팅 시스템의 범용 레지스터에 저장하여 관리하는, 컴퓨팅 시스템.
  8. 제5항에 있어서,
    상기 컴퓨팅 시스템은, 상기 제2 포인터를 저장하는 전용 레지스터를 더 포함하고,
    상기 메모리 컨트롤러는, 상기 제2 포인터를 상기 전용 레지스터에 저장하여 관리하는, 컴퓨팅 시스템.
  9. 높은 속도의 데이터 액세스가 가능하여, 프로세서의 태스크 처리를 보조하는 제1 메모리;
    상기 제1 메모리보다 낮은 속도의 데이터 액세스가 가능하여, 상기 제1 메모리의 데이터를 백업하는 제2 메모리; 및
    오버레이(Overlay) 기법을 이용하여, 상기 프로세서에서 처리되는 제1 태스크를 제2 태스크로 변경하는 경우, 상기 제1 메모리에 저장된 상기 제1 태스크에 연관된 데이터 중 이전에 상기 제2 메모리에 백업되지 않은 데이터를 상기 제2 메모리로 복사하는 메모리 컨트롤러
    를 포함하는, 컴퓨팅 시스템.
  10. 제9항에 있어서,
    상기 제1 메모리는 스크래치 패드 메모리(Scratch Pad Memory)인, 컴퓨팅 시스템.
  11. 제9항에 있어서,
    상기 제1 태스크에 연관된 데이터는, 스택(Stack) 구조로서 상기 제1 메모리 또는 상기 제2 메모리에 저장되는, 컴퓨팅 시스템.
  12. 제11항에 있어서,
    상기 메모리 컨트롤러는,
    상기 프로세서에서 상기 제1 태스크가 처리되는 동안, 상기 스택 내의 데이터의 탑(top) 어드레스를 가리키는 제1 포인터 및 상기 스택 내의 데이터 중 이전에 상기 제2 메모리에 백업되지 않았던 부분의 바닥(bottom)을 가리키는 제2 포인터를 저장하고,
    오버레이(Overlay) 기법을 이용하여, 상기 프로세서에서 처리되는 제1 태스크를 제2 태스크로 변경하는 경우, 상기 제1 포인터에 대응하는 주소와 상기 제2 포인터에 대응하는 주소 사이에 저장된 데이터를 상기 제2 메모리로 복사하는, 컴퓨팅 시스템.
  13. 프로세서에서 처리되는 태스크를 제1 태스크로부터 제2 태스크로 교체하는 태스크 오버레이 명령을 수신하는 단계;
    상기 프로세서의 태스크 처리를 보조하는 제1 메모리에 저장된 상기 제1 태스크에 연관된 데이터 중, 상기 제1 메모리의 데이터를 백업하는 제2 메모리에 이전에 백업되지 않았던 데이터를 식별하는 단계; 및
    상기 식별된 데이터를 상기 제2 메모리에 복사하여 상기 제1 태스크에 연관된 데이터를 상기 제2 메모리에 백업하는 단계
    를 포함하는, 메모리 관리 방법.
  14. 제13항에 있어서,
    상기 제1 태스크에 연관된 데이터는 스택(Stack)으로서 상기 제1 메모리 또는 상기 제2 메모리에 저장되는 것인, 메모리 관리 방법.
  15. 제14항에 있어서,
    상기 식별하는 단계는,
    상기 스택 내의 데이터의 탑 어드레스를 가리키는 제1 포인터 및 상기 스택 내의 데이터 중 이전에 상기 제2 메모리에 백업되지 않았던 부분의 바닥을 가리키는 제2 포인터를 식별하는 단계; 및
    상기 제1 포인터에 대응하는 주소와 상기 제2 포인터에 대응하는 주소 사이에 저장된 데이터를, 상기 제2 메모리에 이전에 백업되지 않았던 데이터로 식별하는 단계
    를 포함하는, 메모리 관리 방법.
  16. 제13항에 있어서,
    스택으로서 상기 제2 메모리에 백업되어 있던 상기 제2 태스크에 연관된 데이터를 상기 제1 메모리로 복원하는 단계; 및
    상기 제2 태스크를 처리하는 경우, 상기 복원된 데이터에 대해, 상기 복원된 데이터의 탑 어드레스를 가리키는 제3 포인터 및 이전에 상기 제2 메모리에 백업되지 않았던 부분의 바닥을 가리키는 제2 포인터를 저장하여 관리하는 단계
    를 더 포함하는, 메모리 관리 방법.
  17. 제13항 내지 제16항 중 어느 한 항의 메모리 관리 방법을 수행하기 위한 프로그램을 수록한 컴퓨터 판독 가능 기록 매체.
KR1020090109633A 2009-11-13 2009-11-13 컴퓨팅 시스템 및 컴퓨팅 시스템의 메모리 관리 방법 KR101590764B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020090109633A KR101590764B1 (ko) 2009-11-13 2009-11-13 컴퓨팅 시스템 및 컴퓨팅 시스템의 메모리 관리 방법
US12/923,868 US8478956B2 (en) 2009-11-13 2010-10-12 Computing system and method controlling memory of computing system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090109633A KR101590764B1 (ko) 2009-11-13 2009-11-13 컴퓨팅 시스템 및 컴퓨팅 시스템의 메모리 관리 방법

Publications (2)

Publication Number Publication Date
KR20110052902A true KR20110052902A (ko) 2011-05-19
KR101590764B1 KR101590764B1 (ko) 2016-02-02

Family

ID=44012185

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090109633A KR101590764B1 (ko) 2009-11-13 2009-11-13 컴퓨팅 시스템 및 컴퓨팅 시스템의 메모리 관리 방법

Country Status (2)

Country Link
US (1) US8478956B2 (ko)
KR (1) KR101590764B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150114444A (ko) * 2014-04-01 2015-10-12 삼성전자주식회사 실시간 운영 체제에서 스택 메모리 관리를 제공하는 방법 및 시스템

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
MA41291A (fr) 2014-12-30 2017-11-07 Forma Therapeutics Inc Dérivés de la pyrrolotriazinone et de l'imidazotriazinone en tant qu'inhibiteurs de la protéase spécifique de l'ubiquitine n° 7 (usp7) pour le traitement d'un cancer
US9932351B2 (en) 2015-02-05 2018-04-03 Forma Therapeutics, Inc. Thienopyrimidinones as ubiquitin-specific protease 7 inhibitors
WO2016126935A1 (en) 2015-02-05 2016-08-11 Forma Therapeutics, Inc. Isothiazolopyrimidinones, pyrazolopyrimidinones, and pyrrolopyrimidinones as ubiquitin-specific protease 7 inhibitors
CN106681692A (zh) * 2015-11-09 2017-05-17 联发科技(新加坡)私人有限公司 控制装置、集成电路及任务栈的管理方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09167114A (ja) 1995-12-18 1997-06-24 Hitachi Ltd マルチスレッドタスクのスタック割り当て方法
US6298422B1 (en) * 1996-06-17 2001-10-02 Network Associates, Inc. Method for reducing the memory requirements for an application program executing in a multi-tasking environment
JP2000122880A (ja) 1998-10-15 2000-04-28 Nec Ic Microcomput Syst Ltd リアルタイムosを搭載した情報処理装置
JP2005050208A (ja) 2003-07-30 2005-02-24 Matsushita Electric Ind Co Ltd マルチタスクシステムにおけるメモリ管理方式およびタスク制御装置
JP2005071141A (ja) 2003-08-26 2005-03-17 Nec Micro Systems Ltd スタック管理方法及び装置並びにスタック管理プログラム
KR100846451B1 (ko) 2006-12-12 2008-07-16 한국전자통신연구원 멀티 쓰레드 기반 센서 운영체제 환경에서의 스택 할당방법
JP2008210038A (ja) 2007-02-23 2008-09-11 Aplix Corp ユーザスレッドの実装方法
KR101017351B1 (ko) 2007-05-02 2011-02-28 한국전자통신연구원 멀티 쓰레드 기반 운영체제에서의 동적 쓰레드 스택재할당 방법
JP2009025947A (ja) 2007-07-18 2009-02-05 Sharp Corp バックアップシステム
US8200637B1 (en) * 2008-09-30 2012-06-12 Symantec Operating Corporation Block-based sparse backup images of file system volumes
KR20100050108A (ko) * 2008-11-05 2010-05-13 삼성전자주식회사 메모리 관리 장치 및 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150114444A (ko) * 2014-04-01 2015-10-12 삼성전자주식회사 실시간 운영 체제에서 스택 메모리 관리를 제공하는 방법 및 시스템

Also Published As

Publication number Publication date
US20110119457A1 (en) 2011-05-19
KR101590764B1 (ko) 2016-02-02
US8478956B2 (en) 2013-07-02

Similar Documents

Publication Publication Date Title
US10977124B2 (en) Distributed storage system, data storage method, and software program
JP6310061B2 (ja) システムメモリから不揮発性データストレージに移行されるアプリケーションプログラムデータの選択的保持
JP3830886B2 (ja) 不揮発性メモリへのデータ貯蔵方法
KR102093523B1 (ko) 순차적인 순서의 스왑 파일을 이용한 작업 세트 스와핑 기법
US20080235477A1 (en) Coherent data mover
US10223026B2 (en) Consistent and efficient mirroring of nonvolatile memory state in virtualized environments where dirty bit of page table entries in non-volatile memory are not cleared until pages in non-volatile memory are remotely mirrored
JP6882662B2 (ja) マイグレーションプログラム、情報処理装置およびマイグレーション方法
US20050044332A1 (en) Systems and methods for storing data on computer systems
US20090313446A1 (en) Method and system for cross-domain data sharing
US20110213954A1 (en) Method and apparatus for generating minimum boot image
WO2014109007A1 (ja) ストレージ階層管理システム
JP2010186340A (ja) メモリシステム
KR20120058352A (ko) 하이브리드 메모리 시스템, 및 그 관리 방법
US10140212B2 (en) Consistent and efficient mirroring of nonvolatile memory state in virtualized environments by remote mirroring memory addresses of nonvolatile memory to which cached lines of the nonvolatile memory have been flushed
US6996582B2 (en) Virtual storage systems and virtual storage system operational methods
TWI417724B (zh) 使用替代頁池管理直接記憶器存取寫入頁錯誤之電腦執行方法、裝置、及電腦程式產品
JP2013174975A (ja) メモリシステムとそのデータ書き込み方法
KR20200121372A (ko) 하이브리드 메모리 시스템
KR101590764B1 (ko) 컴퓨팅 시스템 및 컴퓨팅 시스템의 메모리 관리 방법
US20130238870A1 (en) Disposition instructions for extended access commands
KR101996641B1 (ko) 메모리 오버레이 장치 및 방법
US8745340B2 (en) Reduction of communication and efficient failover processing in distributed shared memory-based application
KR20200117032A (ko) 하이브리드 메모리 시스템
US20190324868A1 (en) Backup portion of persistent memory
CN112445425A (zh) 多层级存储

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20191226

Year of fee payment: 5