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

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

Info

Publication number
KR20110052903A
KR20110052903A KR1020090109634A KR20090109634A KR20110052903A KR 20110052903 A KR20110052903 A KR 20110052903A KR 1020090109634 A KR1020090109634 A KR 1020090109634A KR 20090109634 A KR20090109634 A KR 20090109634A KR 20110052903 A KR20110052903 A KR 20110052903A
Authority
KR
South Korea
Prior art keywords
memory
data structure
stack
address
computing system
Prior art date
Application number
KR1020090109634A
Other languages
English (en)
Other versions
KR101612780B1 (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 KR1020090109634A priority Critical patent/KR101612780B1/ko
Priority to US12/881,752 priority patent/US9448844B2/en
Publication of KR20110052903A publication Critical patent/KR20110052903A/ko
Application granted granted Critical
Publication of KR101612780B1 publication Critical patent/KR101612780B1/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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

계층적 메모리 구조를 갖는 컴퓨팅 시스템이 제공된다. 그리고 상기 컴퓨팅 시스템에서 처리되는 태스크에 대해 데이터 구조가 할당되는 경우, 상기 데이터 구조는 분량적으로 나누어져서, 일부는 상기 계층적 메모리 구조 중 고속의 메모리에, 그리고 나머지는 상기 계층적 메모리 구조 중 저속의 메모리 내에서 각각 할당된다.
멀티 태스킹, 컴퓨터 시스템, Scratchpad Memory, computer system, multi-tasking

Description

컴퓨팅 시스템 및 컴퓨팅 시스템의 메모리 관리 방법{COMPUTING SYSTEM AND METHOD FOR CONTROLING MEMORY OF COMPUTING SYSTEM}
계층적 메모리 구조를 갖는 컴퓨팅 시스템에 연관되며, 보다 특정하게는 계층적 메모리 구조에서, 데이터 액세스 속도가 높은 내부 메모리 내에 콜 스택(Call stack)을 할당하는 경우, 메모리 공간의 사용 효율을 높이는 메모리 관리 방법에 연관된다.
콜 스택(Call stack)은 컴퓨터 프로그램에서 활성화된 서브루틴에 대한 정보를 저장하고 있는 동적 데이터 구조이다. 이러한 콜 스택은 이그제큐션 스택(Execution stack), 컨트롤 스택(Control stack), 펑션 스택(Function stack), 또는 런타임 스택(Run-time stack)이라고 불리며, 단순하게 스택(stack)이라고도 불린다.
이러한 콜 스택은 리턴 어드레스(return address)를 저장하고, 파라미터 패싱(parameter passing)을 하고, 로컬 데이터(local data)를 저장하기 위해서 사용한다.
콜러(caller)는 리턴 어드레스를 스택에 푸시(push)하고, 호출된 서브루틴 이 작업을 완료하면 스택으로부터 리턴 어드레스를 팝(pop)한다. 그리고, 호출된 서브루틴에서 다른 서브루틴을 호출할 경우에는 콜러의 리턴 어드레스를 스택에 푸시한다.
한편, 일반적으로 계층적인(hierarchical) 메모리 배치 구조를 갖는 컴퓨팅 시스템에 있어서, 데이터 액세스 속도가 높은 내부 메모리에 태스크들을 위한 콜 스택을 할당하는 경우, 메모리 활용도를 높이는 것이 바람직하다.
계층적 메모리 구조를 갖는 컴퓨팅 시스템에 있어서, 데이터 액세스 속도가 높은 내부 메모리의 공간 활용도를 높인 메모리 관리 방법 및 컴퓨팅 시스템이 제공된다.
복수 개의 태스크를 처리하는 경우, 연산 속도를 높인 메모리 관리 방법 및 컴퓨팅 시스템이 제공된다.
본 발명의 일측에 따르면, 프로세서에서 처리되는 제1 태스크에 대응하는 제1 데이터 구조 영역을 할당하는 제1 메모리, 상기 제1 태스크에 대응하는 제2 데이터 구조 영역을 할당하는 제2 메모리, 및 상기 프로세서에서 상기 제1 태스크가 처리되는 경우 요구되는 메모리 사용 량을 분석하고, 상기 분석된 메모리 사용량에 따라 상기 제1 데이터 구조 영역의 크기 및 상기 제2 데이터 구조 영역의 크기를 결정하는 메모리 컨트롤러를 포함하는, 컴퓨팅 시스템이 제공된다.
이 경우, 상기 제1 메모리는 상기 프로세서의 내부 메모리(internal memory)이고, 상기 제2 메모리는 상기 프로세서의 외부 메모리(external memory)일 수 있다. 그리고, 상기 제1 메모리는 스크래치 패드 메모리(Scratch Pad Memory)일 수 있다.
한편, 본 발명의 일 실시예에 따르면, 상기 제1 데이터 구조 및 상기 제2 데이터 구조는 스택(Stack)이다.
이 경우, 상기 메모리 컨트롤러는, 상기 프로세서에서 상기 제1 태스크가 처리되는 경우 요구되는 메모리 사용 량의 시간 별 분포를 분석하고, 제1 비율 이상의 시간 동안의 메모리 사용 량을 커버할 수 있는 제1 임계 값을 상기 제1 데이터 구조의 크기로 결정한다.
그리고, 상기 메모리 컨트롤러는, 상기 분석된 메모리 사용 량의 시간 별 분포의 최대 값과 상기 제1 임계 값의 차이를 상기 제2 데이터 구조의 크기로 결정한다.
한편, 상기 컴퓨팅 시스템의 컴파일러가 함수를 컴파일 하는 경우, 스택 푸시 명령 수행 시 스택 포인터(Stack Pointer)가 상기 제1 데이터 구조의 어드레스를 벗어나는 경우 상기 스택 포인터를 상기 제2 데이터 구조의 첫 어드레스로 조정하는 기계어 코드 및 스택 팝 명령 수행 시 스택 포인터가 상기 제2 데이터 구조의 어드레스를 벗어나는 경우 상기 스택 포인터를 상기 제1 데이터 구조의 마지막 어드레스로 조정하는 기계어 코드가 생성될 수 있다.
본 발명의 다른 일 실시예에 따르면, 상기 컴퓨팅 시스템은 상기 제1 데이 터 구조의 마지막 어드레스를 저장하는 제1 레지스터, 및 상기 제2 데이터 구조의 첫 어드레스를 저장하는 제2 레지스터를 더 포함한다.
이 경우, 상기 컴퓨팅 시스템의 스택 팝(Stack POP) 명령의 마이크로 코드에, 스택 포인터가 상기 제2 데이터 구조의 첫 어드레스인 경우, 상기 스택 포인터를 상기 제1 데이터 구조의 마지막 어드레스로 조정하는 코드 라인이 추가된다.
그리고, 상기 컴퓨팅 시스템의 스택 푸시(Stack PUSH) 명령의 마이크로 코드에, 스택 포인터가 상기 제1 데이터 구조의 마지막 어드레스인 경우, 상기 스택 포인터를 상기 제2 데이터 구조의 첫 어드레스로 조정하는 코드 라인이 추가된다.
한편, 상기 제1 메모리는, 복수 개의 태스크에 대한 공유 데이터 구조 영역을 더 할당할 수 있다.
본 발명의 다른 일측에 따르면, 프로세서에서 제1 태스크가 처리되는 경우 요구되는 메모리 사용 량을 분석하는 단계, 상기 분석된 메모리 사용량에 따라 결정되는 제1 임계 값의 크기의 제1 데이터 구조를 상기 제1 태스크에 대응하여 제1 메모리에 할당하는 단계, 및 상기 분석된 메모리 사용량의 최대 값과 상기 제1 임계 값의 차이의 크기의 제2 데이터 구조를 상기 제1 태스크에 대응하여 제2 메모리에 할당하는 단계를 포함하는, 컴퓨팅 시스템의 메모리 관리 방법이 제공된다.
여기서 상기 제1 데이터 구조 및 상기 제2 데이터 구조는 스택일 수 있다.
이 때, 상기 컴퓨팅 시스템의 메모리 관리 방법은, 스택 팝 명령이 수신되는 경우, 스택 포인터가 상기 제2 데이터 구조의 첫 어드레스인지 판단하는 단계, 및 스택 포인터가 상기 제2 데이터 구조의 첫 어드레스인 경우, 상기 스택 포인터 를 상기 제1 데이터 구조의 마지막 어드레스로 조정하는 단계를 더 포함할 수 있다.
또한, 상기 컴퓨팅 시스템의 메모리 관리 방법은, 스택 푸시 명령이 수신되는 경우, 스택 포인터가 상기 제1 데이터 구조의 마지막 어드레스인지 판단하는 단계, 및 스택 포인터가 상기 제1 데이터 구조의 마지막 어드레스인 경우, 상기 스택 포인터를 상기 제2 데이터 구조의 첫 어드레스로 조정하는 단계를 더 포함할 수 있다
이하에서, 본 발명의 일부 실시예를, 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 일 실시예에 따른 컴퓨팅 시스템(100)을 도시한다.
컴퓨터 시스템(100) 계층적인 메모리 배치 구조를 갖는다.
이러한 계층적 메모리 배치 구조에서, 프로세서(Processor)(101)에 가까운 제1 메모리(110)에는 데이터 액세스 속도가 높은 종류의 메모리가 채택된다.
이를테면, 상기 제1 메모리(110)는 레지스터(Register) 또는 캐시(Cache) 등의 고속(high speed) 메모리일 수 있다.
또한, 최근 임베디드 시스템(Embedded system)에서는 프로세서 내부에 스크래치 패드 메모리(Scratchpad memory)라는 빠른 처리 속도의 메모리를 두어서 데이터를 처리하고 있다. 상기 컴퓨팅 시스템(100)이 이러한 임베디드 시스템인 실시 예에서는, 상기 제1 메모리(110)는 스크래치 패드 메모리일 수 있다.
그런데 이러한 제1 메모리(110)는 상대적으로 가격이 비싸기 때문에 작은 용량만 선택된다. 이러한 메모리는 프로세서 내부에 배치되기도 하기 때문에 내부 메모리(Internal memory)라고도 불린다.
한편 프로세서에서 먼 제2 메모리(120)에는, 데이터 액세스 속도가 낮지만, 가격이 낮은 종류의 메모리가 채택된다. 이를테면, 상기 제2 메모리(120)는 컴퓨팅 시스템의 메인 메모리인 DRAM(Dynamic Random Access Memory)일 수 있다.
이러한 제2 메모리(120)는 상기한 바와 같이 상대적으로 가격이 싸기 때문에 비교적 큰 용량이 선택된다. 이러한 제2 메모리(120)는 프로세서 외부에 배치되기 때문에 외부 메모리(External memory)라고도 불린다.
따라서, 계층적인 메모리 배치 구조를 갖는 컴퓨팅 시스템(100)에 있어서, 태스크가 수행되는 데에 필요한 데이터가 상기 제1 메모리(110)에 저장되는 경우 연산 속도는 빠르지만, 시스템 구현을 위한 비용이 높아진다.
그러므로, 본 발명의 일 실시예에 따르면, 비교적 적은 크기의 제1 메모리(110)의 저장 공간이 효율적으로 사용된다.
한편, 제1 메모리(110) 내에 상기 프로세서(101)에서 처리되는 태스크에 연관되는 데이터가 스택으로써 할당되는 경우, 상기 스택 사용량은 시간에 따라 변화한다. 대부분의 시간에는 상기 스택 사용량이 어떤 임계 값 이하의 크기로 유지되지만, 특정한 시간 구간에는 평균 스택 사용량을 훨씬 초과하는 워스트 케이스(Worst case)가 발생한다.
그런데, 상기 제1 메모리(110) 내에 상기 프로세서(101)에서 처리되는 상기 태스크에 연관되는 데이터를 위해, 최대 스택 사용량에 따른 공간을 할당하는 경우, 상기 제1 메모리(110)의 사용률이 떨어진다.
따라서, 본 발명의 일 실시예에 따르면, 메모리 컨트롤러(130)가 프로세서(101)에서 수행될 각 태스크에 대하여, 스택 사용량을 미리 분석한다.
이 경우, 메모리 컨트롤러(130)는 스택이 할당되어야 하는 전체 시간 중 일정한 제1 비율 이상을 커버할 수 있는 제1 임계 값을 제1 메모리(110) 내의 스택 할당량으로 결정한다.
그리고, 상기 워스트 케이스를 위해, 상기 제1 임계 값과 상기 스택 사용량의 최대 값의 차이만큼의 크기를 제2 메모리(110) 내의 스택 할당량으로 결정한다.
보다 상세한 내용은 도 2 이하를 참조하여 보다 상세히 후술한다.
도 2는 본 발명의 일 실시예에 따른 컴퓨팅 시스템의 동작을 설명하기 위해 도시되는, 예시적인 제1 태스크의 시간에 따른 스택 공간 사용 크기 그래프(200)이다.
그래프(200)에서, X 축은 제1 태스크의 처리 시간에 대응하며, 단위는 밀리세컨드이다.
그리고, Y 축은 제1 태스크 처리를 위해 스택 구조 내에 저장되어야 할 데이터의 크기이다. 이 데이터의 크기는 스택 사용량(Stack Space Usage)라고도 하며, 단위는 bytes이다.
그래프(200)에서 도시된 바와 같이, 스택 사용량은 대부분의 시간 동안 어 느 임계 값을 초과하지 않는다. 이 임계 값은 평균 라인(201) 보다는 높다.
본 발명의 일 실시예에 따르면, 영역(210)의 스택 사용량을 커버할 수 있는 제1 임계 값인, 약 35 byte 크기가 상기 제1 태스크를 위한 노말 스택(Normal stack)으로서 상기 제1 메모리(110) 내에 할당된다.
그리고, 영역(220)에 해당하는 워스트 케이스의 스택 사용량을 커버할 수 있는 크기인, 상기 제1 임계 값과 스택 사용량의 최대 값의 차이인 약 20 bytes 크기가 상기 제1 스택을 위한 워스트 케이스 스택(Worst case stack)으로서 상기 제2 메모리(120) 내에 할당된다.
따라서, 고속의 제1 메모리(110)와 저속의 제2 메모리(120) 양쪽에 동일한 제1 태스크를 위한 스택이 이원화되어 할당된다.
그래프(200)에서 도시되었듯이, 워스트 케이스의 스택 사용량을 보이는 영역(221), 영역(222), 영역(223)는 전체 태스크 처리 시간 중 아주 일부만을 차지한다.
이를 테면, 상기 워스트 케이스의 스택 사용량에 해당되어, 상기 제2 메모리(120) 내에 할당된 워스트 케이스 스택에 데이터가 푸시(push)되는 시간은, 전체 시간의 2 퍼센트 이하로 유지되도록 설정된다. 이 경우, 상기 영역(210)의 스택 사용량을 커버할 수 있는 상기 제1 임계 값은 전체 시간의 98 퍼센트에 해당하는 스택 사용량 분포를 커버할 수 있는 약 35 bytes로 설정된 것이다.
물론, 이러한 제1 임계 값을 결정하는 구체적인 설정은 얼마든지 변경될 수 있으며, 상기 일부 실시예에 의해 본 발명의 권리 범위가 제한적으로 해석되어서는 안 된다.
이렇게 결정된 바에 따라, 노말 스택이 제1 메모리(110) 내에 할당되고, 워스트 케이스 스택이 제2 메모리(120) 내에 할당되는 것은, 도 3을 참조하여 보다 상세히 후술한다.
도 3은 본 발명의 일 실시예에 따라, 상기 도 1의 제1 메모리(110) 및 제2 메모리(120)에 태스크들의 노말 스택 및 워스트 케이스 스택이 할당되는 과정을 설명하기 위한 개념도이다.
본 실시예에서는, 태스크 1 내지 태스크 4의 네 개의 태스크가 프로세서(101)에서 처리되기 위해, 스택을 할당받았다.
이 태스크들의 시간에 따른 스택 사용량이 각각 메모리 컨트롤러(130)에 의해 분석되고, 이 메모리 컨트롤러(130)는 각 스택에 대한 각각의 분석에 기초하여 노말 스택들(311 내지 314)과 워스트 케이스 스택들(321 내지 324)를 할당한다.
태스크 1이 프로세서(101)에서 처리되는 경우, 노말 스택(311)이 가득 차서 더 이상 푸시 스택 명령이 수행될 수 없는 경우, 즉 워스트 케이시가 발생된 경우에는 워스트 케이스 스택(321)에 데이터가 푸시 된다.
이 경우, 메모리 컨트롤러(130)는 각 스택의 가장 최근에 푸시 된 데이터의 어드레스를 가리키는 스택 포인터(Stack Pointer) SP를 관리할 수 있다.
본 발명의 일 실시예에 따르면, 태스크 1이 처리되는 중, 스택 푸시 명령이 수행되는 경우, SP가 상기 노말 스택(311)의 마지막 어드레스로 판단되는 경우, SP는 바로 다음 어드레스인 노말 스택(312)의 첫 어드레스가 아니라, 워스트 케이스 스택(321)의 첫 어드레스로 조정된다.
그리고, 태스크 1이 처리되는 중, 스택 팝 명령이 수행되는 경우, SP가 상기 워스트 케이스 스택(321)의 첫 어드레스로 판단되는 경우, SP는 바로 전 어드레스가 아니라, 노말 스택(311)의 마지막 어드레스로 조정된다.
이러한 과정은 도 4 내지 도 7을 참조하여 보다 상세히 후술한다.
한편, 본 발명의 일 실시예에 따르면, 상기 제1 메모리(110) 내에는 모든 태스크가 공유하는 공유 워스트 케이스 스택(315)가 할당될 수 있다.
이 경우는, 공유 워스트 케이스 스택(315)는 현재 프로세서(101)에서 처리 중인 제1 태스크에 대한 1차 워스트 케이스 스택으로서 이용된다. 그리고, 이 공유 워스트 케이스 스택(315)에 데이터가 더 이상 푸시 될 수 없는 경우에, 상기 제1 태스크에 대응한 전용 워스트 케이스 스택(321)이 2차 워스트 케이스 스택으로서 이용된다.
그리고, 문맥 교환(context change)에 의해 프로세서(101) 내에서 처리될 태스크가 상기 제1 태스크로부터 제2 태스크로 변경되는 경우, 상기 공유 워스트 케이스 스택(315)에 저장된 데이터는 전용 워스트 케이스 스택(321)로 옮겨진다. 그리고, 이제 상기 공유 워스트 케이스 스택(315)는 상기 제2 태스크의 1차 워스트 케이스 스택으로서 이용된다.
도 4는 본 발명의 일 실시예에 따른 컴퓨팅 시스템(100)에서 컴파일러의 동작을 설명하기 위한 개념도이다.
본 발명의 일 실시예에 따른 컴퓨팅 시스템(100)에서 고급 언어로 기술된 함수(410)가 컴파일 되면, 기계어 코드(420)가 생성된다.
통상적인 컴퓨팅 시스템에서 함수가 컴파일 되는 경우, 스택 프레임(stack frame)을 스택에 푸시 하고, 함수가 처리할 연산을 수행하고 나서, 스택 프레임을 스택으로부터 팝 한 후 이전 함수로 리턴하는 기계어 코드가 생성된다.
그런데, 본 발명의 일 실시예에 따른 컴퓨팅 시스템에서 함수가 컴파일 되는 경우, 스택 프레임을 스택에 푸시 인 하는 경우, 상기 스택 포인터 SP가 노말 스택의 마지막 어드레스에 해당한다면 SP를 바로 다음 어드레스가 아닌 워스트 케이스 스택의 첫 어드레스로 조정하는 코드 라인(421)이 추가된다.
그리고, 스택 프레임을 스택으로부터 팝 아웃 하는 경우, 상기 스택 포인터 SP가 워스트 케이스 스택의 첫 어드레스에 해당한다면 SP를 바로 전 어드레스가 아닌 노말 스택의 마지막 어드레스로 조정하는 코드 라인(422)이 추가된다.
이 경우, 통상적인 컴퓨팅 시스템과 비교하여 하드웨어 구성의 변경 없이, 컴파일러를 약간 수정함으로써, 노말 스택과 워스트 케이스 스택이 관리된다.
도 5는 본 발명의 일 실시예에 따른 컴퓨팅 시스템(100)에서 노말 스택과 워스트 케이스 스택의 할당 영역을 표시한 포인터들을 설명하기 위한 개념도이다.
제1 태스크의 노말 스택의 마지막 어드레스를 가리키는 제1 포인터가 LRns(Limit Register of normal stack) (510)에 저장된다. 그리고, 제1 태스크의 워스트 케이스 스택의 첫 어드레스를 가리키는 제2 포인터가 BRws(Base Register of worst case stack) (520)에 저장된다.
이 경우, 스택 팝(Stack POP) 명령과 스택 푸시(Stack PUSH) 명령을 수행하 는 마이크로 코드가 변경될 수 있는데, 보다 상세한 내용은 도 6 및 도 7을 참조하여 후술한다.
도 6은 본 발명의 일 실시예에 따른 컴퓨팅 시스템(100)에서 스택 팝 명령의 코드(600)를 설명하기 위한 개념도이다.
본 실시예에서는 스택 팝 명령을 위한 마이크로 코드(600)가 통상의 마이크로 코드로부터 수정되었다. 이 경우, 스택 팝 명령이 수행될 때마다, 현재의 SP와 상기 도 5의 BRws가 동일한지를 판단하여, 동일한 경우에는 SP를 상기 LRns로 조정하는 코드 라인(610)이 추가되었다.
이 실시예에 따르면, 컴퓨팅 시스템(100)의 컴파일러는 수정되지 않아도 된다.
도 7은 본 발명의 일 실시예에 따른 컴퓨팅 시스템(100)에서 스택 푸시 명령의 코드(700)를 설명하기 위한 개념도이다.
본 실시예에서는 스택 푸시 명령을 위한 마이크로 코드(700)에, 스택 푸시 명령이 수행될 때마다, 현재의 SP와 상기 도 5의 LRns가 동일한지를 판단하여, 동일한 경우에는 SP를 상기 BRws로 조정하는 코드 라인(710)이 추가되었다.
이 실시예에서도, 컴퓨팅 시스템(100)의 컴파일러는 수정되지 않는다.
도 8은 본 발명의 일 실시예에 따른 메모리 관리 방법을 도시한다.
단계(S810)에서 프로세서(101)에서 처리되어야 할 제1 태스크가 입력된다.
이 경우, 단계(S820)에서, 메모리 컨트롤러(130)는 상기 제1 태스크의 시간에 따른 스택 사용량을 분석한다. 그리고, 상기 제1 태스크를 위한 노말 스택의 크기와 워스트 케이스 스택의 크기를 결정한다.
이러한 노말 스택의 크기와 워스트 케이스 스택의 크기를 결정 과정은, 도 2를 참조하여 상술한 바와 같다.
그러면 메모리 컨트롤러(130)는 제1 메모리(110)에 상기 제1 태스크의 노말 스택을 할당한다.
그리고, 단계(S830)에서, 메모리 컨트롤러(130)는 제2 메모리(120)에 상기 제1 태스크의 워스트 케이스 스택을 할당한다.
이러한 과정을 통해 상기 제1 태스크를 포함한 네 개의 태스크들에 대하여, 노말 스택이 제1 메모리(110)에 할당되고, 워스트 케이스 스택이 제2 메모리(120)에 할당된 모습은, 도 3을 참조하여 상술한 바와 같다.
도 9는 본 발명의 일 실시예에 따른 메모리 관리 방법에 따라 스택 팝 명령을 수행하는 과정을 도시하는 흐름도이다.
단계(S910)에서 스택 팝 명령이 수신된다. 이 경우, 단계(S920)에서 스택 팝 명령이 수행되고, 스택 포인터 SP는 1 감소된다.
그러면, 단계(S930)에서 SP가 상기 도 5의 BRws와 동일한지의 여부가 판단된다.
상기 SP가 BRws와 동일한 경우에는, 단계(S940)에서 상기 SP가 도 5의 LRns로 조정된다.
도 10은 본 발명의 일 실시예에 따른 메모리 관리 방법에 따라 스택 푸시 명령을 수행하는 과정을 도시하는 흐름도이다.
단계(S1010)에서 스택 푸시 명령이 수신되면, 단계(S1020)에서 스택 포인터 SP가 1 증가된다.
그리고, 단계(S1030)에서 SP가 도 5의 LRns와 동일한지 여부가 판단된다.
상기 SP가 LRns와 동일한 경우에는, 상기 SP가 도 5의 BRws로 조정된다.
그리고, 단계(S1050)에서 스택 푸시 명령이 수행된다.
본 발명의 일 실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
도 1은 본 발명의 일 실시예에 따른 컴퓨팅 시스템을 도시한다.
도 2는 본 발명의 일 실시예에 따른 컴퓨팅 시스템의 동작을 설명하기 위해 도시되는, 예시적인 제1 태스크의 시간에 따른 스택 공간 사용 크기 그래프이다.
도 3은 본 발명의 일 실시예에 따라, 상기 도 1의 제1 메모리 및 제2 메모리에 태스크들의 노말 스택 및 워스트 케이스 스택이 할당되는 과정을 설명하기 위한 개념도이다.
도 4는 본 발명의 일 실시예에 따른 컴퓨팅 시스템에서 컴파일러의 동작을 설명하기 위한 개념도이다.
도 5는 본 발명의 일 실시예에 따른 컴퓨팅 시스템에서 노말 스택과 워스트 케이스 스택의 할당 영역을 표시한 포인터들을 설명하기 위한 개념도이다.
도 6은 본 발명의 일 실시예에 따른 컴퓨팅 시스템에서 스택 팝 명령의 코드를 설명하기 위한 개념도이다.
도 7은 본 발명의 일 실시예에 따른 컴퓨팅 시스템에서 스택 푸시 명령의 코드를 설명하기 위한 개념도이다.
도 8은 본 발명의 일 실시예에 따른 메모리 관리 방법을 도시한다.
도 9는 본 발명의 일 실시예에 따른 메모리 관리 방법에 따라 스택 팝 명령을 수행하는 과정을 도시하는 흐름도이다.
도 10은 본 발명의 일 실시예에 따른 메모리 관리 방법에 따라 스택 푸시 명령을 수행하는 과정을 도시하는 흐름도이다.

Claims (17)

  1. 프로세서에서 처리되는 제1 태스크에 대응하는 제1 데이터 구조 영역을 할당하는 제1 메모리;
    상기 제1 태스크에 대응하는 제2 데이터 구조 영역을 할당하는 제2 메모리; 및
    상기 프로세서에서 상기 제1 태스크가 처리되는 경우 요구되는 메모리 사용 량을 분석하고, 상기 분석된 메모리 사용량에 따라 상기 제1 데이터 구조 영역의 크기 및 상기 제2 데이터 구조 영역의 크기를 결정하는 메모리 컨트롤러
    를 포함하는, 컴퓨팅 시스템.
  2. 제1항에 있어서,
    상기 제1 메모리는 상기 프로세서의 내부 메모리(internal memory)이고, 상기 제2 메모리는 상기 프로세서의 외부 메모리(external memory)인, 컴퓨팅 시스템.
  3. 제2항에 있어서,
    상기 제1 메모리는 스크래치 패드 메모리(Scratch Pad Memory)인, 컴퓨팅 시스템.
  4. 제1항에 있어서,
    상기 제1 데이터 구조 및 상기 제2 데이터 구조는 스택인, 컴퓨팅 시스템.
  5. 제4항에 있어서,
    상기 메모리 컨트롤러는, 상기 프로세서에서 상기 제1 태스크가 처리되는 경우 요구되는 메모리 사용 량의 시간 별 분포를 분석하고, 제1 비율 이상의 시간 동안의 메모리 사용 량을 커버할 수 있는 제1 임계 값을 상기 제1 데이터 구조의 크기로 결정하는, 컴퓨팅 시스템.
  6. 제5항에 있어서,
    상기 메모리 컨트롤러는, 상기 분석된 메모리 사용 량의 시간 별 분포의 최대 값과 상기 제1 임계 값의 차이를 상기 제2 데이터 구조의 크기로 결정하는, 컴퓨팅 시스템.
  7. 제6항에 있어서,
    상기 컴퓨팅 시스템의 컴파일러가 함수를 컴파일 하는 경우,
    스택 푸시 명령 수행 시 스택 포인터(Stack Pointer)가 상기 제1 데이터 구조의 어드레스를 벗어나는 경우 상기 스택 포인터를 상기 제2 데이터 구조의 첫 어드레스로 조정하는 기계어 코드; 및
    스택 팝 명령 수행 시 스택 포인터가 상기 제2 데이터 구조의 어드레스를 벗어나는 경우 상기 스택 포인터를 상기 제1 데이터 구조의 마지막 어드레스로 조정하는 기계어 코드
    가 생성되는, 컴퓨팅 시스템.
  8. 제6항에 있어서,
    상기 제1 데이터 구조의 마지막 어드레스를 저장하는 제1 레지스터; 및
    상기 제2 데이터 구조의 첫 어드레스를 저장하는 제2 레지스터
    를 더 포함하는, 컴퓨팅 시스템.
  9. 제8항에 있어서,
    스택 팝 명령의 마이크로 코드에, 스택 포인터가 상기 제2 데이터 구조의 첫 어드레스인 경우, 상기 스택 포인터를 상기 제1 데이터 구조의 마지막 어드레스로 조정하는 코드 라인이 추가된, 컴퓨팅 시스템.
  10. 제8항에 있어서,
    스택 푸시 명령의 마이크로 코드에, 스택 포인터가 상기 제1 데이터 구조의 마지막 어드레스인 경우, 상기 스택 포인터를 상기 제2 데이터 구조의 첫 어드레스로 조정하는 코드 라인이 추가된, 컴퓨팅 시스템.
  11. 제1항에 있어서,
    상기 제1 메모리는, 복수 개의 태스크에 대한 공유 데이터 구조 영역을 더 할당하는, 컴퓨팅 시스템.
  12. 프로세서에서 제1 태스크가 처리되는 경우 요구되는 메모리 사용 량을 분석하는 단계;
    상기 분석된 메모리 사용량에 따라 결정되는 제1 임계 값의 크기의 제1 데이터 구조를 상기 제1 태스크에 대응하여 제1 메모리에 할당하는 단계; 및
    상기 분석된 메모리 사용량의 최대 값과 상기 제1 임계 값의 차이의 크기의 제2 데이터 구조를 상기 제1 태스크에 대응하여 제2 메모리에 할당하는 단계
    를 포함하는, 컴퓨팅 시스템의 메모리 관리 방법.
  13. 제12항에 있어서,
    상기 제1 메모리는 상기 프로세서의 내부 메모리이고, 상기 제2 메모리는 상기 프로세서의 외부 메모리인, 컴퓨팅 시스템의 메모리 관리 방법.
  14. 제12항에 있어서,
    상기 제1 데이터 구조 및 상기 제2 데이터 구조는 스택인, 컴퓨팅 시스템의 메모리 관리 방법.
  15. 제14항에 있어서,
    스택 팝 명령이 수신되는 경우,
    스택 포인터가 상기 제2 데이터 구조의 첫 어드레스인지 판단하는 단계; 및
    스택 포인터가 상기 제2 데이터 구조의 첫 어드레스인 경우, 상기 스택 포인터를 상기 제1 데이터 구조의 마지막 어드레스로 조정하는 단계
    를 더 포함하는, 컴퓨팅 시스템의 메모리 관리 방법.
  16. 제14항에 있어서,
    스택 푸시 명령이 수신되는 경우,
    스택 포인터가 상기 제1 데이터 구조의 마지막 어드레스인지 판단하는 단계; 및
    스택 포인터가 상기 제1 데이터 구조의 마지막 어드레스인 경우, 상기 스택 포인터를 상기 제2 데이터 구조의 첫 어드레스로 조정하는 단계
    를 더 포함하는, 컴퓨팅 시스템의 메모리 관리 방법.
  17. 제12항 내지 제16항 중 어느 한 항의 메모리 관리 방법을 수행하기 위한 프로그램을 수록한 컴퓨터 판독 가능 기록 매체.
KR1020090109634A 2009-11-13 2009-11-13 컴퓨팅 시스템 및 컴퓨팅 시스템의 메모리 관리 방법 KR101612780B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020090109634A KR101612780B1 (ko) 2009-11-13 2009-11-13 컴퓨팅 시스템 및 컴퓨팅 시스템의 메모리 관리 방법
US12/881,752 US9448844B2 (en) 2009-11-13 2010-09-14 Computing system and method controlling memory of computing system

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
KR20110052903A true KR20110052903A (ko) 2011-05-19
KR101612780B1 KR101612780B1 (ko) 2016-04-18

Family

ID=44012189

Family Applications (1)

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

Country Status (2)

Country Link
US (1) US9448844B2 (ko)
KR (1) KR101612780B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140046897A (ko) * 2012-10-11 2014-04-21 삼성전자주식회사 멀티코어 프로세서에서 수행되는 프로그램의 컴파일 방법, 멀티코어 프로세서의 태스크 매핑 방법 및 태스크 스케줄링 방법
WO2014092381A1 (ko) * 2012-12-12 2014-06-19 국민대학교산학협력단 스크래치패드 메모리 관리 시스템 및 방법
KR102365261B1 (ko) * 2022-01-17 2022-02-18 삼성전자주식회사 전자시스템, 그 동작방법 및 그 메모리 장치의 동작방법

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102622303B (zh) * 2011-01-30 2016-02-17 国际商业机器公司 一种内存过载控制的方法及装置
US8769233B2 (en) * 2011-06-14 2014-07-01 International Business Machines Corporation Adjusting the amount of memory allocated to a call stack
CN102831073B (zh) * 2012-08-17 2015-06-03 广东威创视讯科技股份有限公司 一种内存数据处理方法和系统
CN106776202B (zh) * 2016-11-25 2020-06-26 日立楼宇技术(广州)有限公司 嵌入式操作系统任务的监控方法与系统
US10509599B2 (en) 2018-03-15 2019-12-17 Micron Technology, Inc. Stack management in memory systems

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4951194A (en) * 1989-01-23 1990-08-21 Tektronix, Inc. Method for reducing memory allocations and data copying operations during program calling sequences
JP3212656B2 (ja) 1991-02-08 2001-09-25 株式会社日立製作所 データ処理システム及びマイクロコンピュータ
JPH0651980A (ja) 1992-07-28 1994-02-25 Fuji Xerox Co Ltd 情報処理装置のスタックの配置方式
JPH0778092A (ja) 1993-09-20 1995-03-20 Matsushita Electric Ind Co Ltd スタック切り換え制御装置
US5539893A (en) * 1993-11-16 1996-07-23 Unisys Corporation Multi-level memory and methods for allocating data most likely to be used to the fastest memory level
US5784699A (en) * 1996-05-24 1998-07-21 Oracle Corporation Dynamic memory allocation in a computer using a bit map index
US5953741A (en) * 1996-11-27 1999-09-14 Vlsi Technology, Inc. Stack cache for stack-based processor and method thereof
US6131144A (en) * 1997-04-01 2000-10-10 Sun Microsystems, Inc. Stack caching method with overflow/underflow control using pointers
US6081895A (en) * 1997-10-10 2000-06-27 Motorola, Inc. Method and system for managing data unit processing
JP3564395B2 (ja) * 1998-11-27 2004-09-08 松下電器産業株式会社 アドレス生成装置および動きベクトル検出装置
JP2001043093A (ja) 1999-07-30 2001-02-16 Kenji Kobayashi スタックを共用するタスク・コンテキスト・スイッチ
DE10127195A1 (de) * 2001-06-05 2002-12-19 Infineon Technologies Ag Prozessor mit interner Speicherkonfiguration
JP2003167737A (ja) * 2001-11-30 2003-06-13 Nec Corp スタック使用方法
EP1408510A3 (en) * 2002-05-17 2005-05-18 Matsushita Electric Industrial Co., Ltd. Memory control apparatus, method and program
JP2004021610A (ja) 2002-06-17 2004-01-22 Mitsubishi Heavy Ind Ltd タスク管理装置
US7178002B2 (en) * 2002-07-24 2007-02-13 Sun Microsystems, Inc. Methods and systems for dynamically growing multiple stacks
US7233335B2 (en) * 2003-04-21 2007-06-19 Nividia Corporation System and method for reserving and managing memory spaces in a memory resource
US20050005018A1 (en) * 2003-05-02 2005-01-06 Anindya Datta Method and apparatus for performing application virtualization
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 スタック管理方法及び装置並びにスタック管理プログラム
US7788461B2 (en) * 2004-04-15 2010-08-31 International Business Machines Corporation System and method for reclaiming allocated memory to reduce power in a data processing system
US7487321B2 (en) * 2004-04-19 2009-02-03 Cisco Technology, Inc. Method and system for memory leak detection
EP1622009A1 (en) * 2004-07-27 2006-02-01 Texas Instruments Incorporated JSM architecture and systems
US20060230409A1 (en) * 2005-04-07 2006-10-12 Matteo Frigo Multithreaded processor architecture with implicit granularity adaptation
US8448187B2 (en) * 2005-08-18 2013-05-21 Panasonic Corporation Conflict resolution apparatus
US8959515B2 (en) * 2006-01-18 2015-02-17 International Business Machines Corporation Task scheduling policy for limited memory systems
US7533236B1 (en) * 2006-05-11 2009-05-12 Nvidia Corporation Off-chip out of order memory allocation for a unified shader
EP2037362A4 (en) * 2006-05-24 2012-04-18 Nec Corp ADMINISTRATIVE APPROACH FOR VIRTUAL MACHINES, METHOD FOR MANAGING A VIRTUAL MACHINE AND PROGRAM
US7590666B2 (en) * 2006-06-16 2009-09-15 Microsoft Corporation Predicting capacity consumption in a memory component
JP4770602B2 (ja) * 2006-06-23 2011-09-14 株式会社デンソー 電子機器
US8516462B2 (en) * 2006-10-09 2013-08-20 International Business Machines Corporation Method and apparatus for managing a stack
JP2008102847A (ja) 2006-10-20 2008-05-01 Nec Corp マルチスレッドプログラム処理方法及び装置
US20080140979A1 (en) * 2006-12-12 2008-06-12 Kim Sang Cheol Method of allocating stack in multi-threaded sensor operating system environment
US8578347B1 (en) * 2006-12-28 2013-11-05 The Mathworks, Inc. Determining stack usage of generated code from a model
KR101017351B1 (ko) * 2007-05-02 2011-02-28 한국전자통신연구원 멀티 쓰레드 기반 운영체제에서의 동적 쓰레드 스택재할당 방법
US7979685B1 (en) * 2007-11-27 2011-07-12 Oracle America, Inc. Multiple instruction execution mode resource-constrained device
JP2010072854A (ja) * 2008-09-17 2010-04-02 Canon Inc 情報処理装置の支援装置、支援方法、およびコンピュータプログラム
US8914417B2 (en) * 2009-01-07 2014-12-16 International Business Machines Corporation Apparatus, system, and method for maintaining a context stack
US8286177B2 (en) * 2009-01-29 2012-10-09 Microsoft Corporation Technique for conserving software application resources
US8301859B2 (en) * 2009-06-22 2012-10-30 Red Hat Israel, Ltd. Automatically adjusting memory of a VM on a power client
US20130055282A1 (en) * 2011-08-22 2013-02-28 Samsung Electronics Co., Ltd. Task management method for embedded systems

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140046897A (ko) * 2012-10-11 2014-04-21 삼성전자주식회사 멀티코어 프로세서에서 수행되는 프로그램의 컴파일 방법, 멀티코어 프로세서의 태스크 매핑 방법 및 태스크 스케줄링 방법
WO2014092381A1 (ko) * 2012-12-12 2014-06-19 국민대학교산학협력단 스크래치패드 메모리 관리 시스템 및 방법
KR102365261B1 (ko) * 2022-01-17 2022-02-18 삼성전자주식회사 전자시스템, 그 동작방법 및 그 메모리 장치의 동작방법

Also Published As

Publication number Publication date
US20110119463A1 (en) 2011-05-19
US9448844B2 (en) 2016-09-20
KR101612780B1 (ko) 2016-04-18

Similar Documents

Publication Publication Date Title
KR20110052903A (ko) 컴퓨팅 시스템 및 컴퓨팅 시스템의 메모리 관리 방법
US8245002B2 (en) Call stack protection
EP3230873B1 (en) Computing method and apparatus with persistent memory
US9280500B2 (en) Method and apparatus for preventing stack overflow in embedded system
US7237064B2 (en) Method and apparatus for feedback-based management of combined heap and compiled code caches
US20110113215A1 (en) Method and apparatus for dynamic resizing of cache partitions based on the execution phase of tasks
US9734075B2 (en) Cache memory control program, processor incorporating cache memory, and cache memory control method
JPH06250928A (ja) 情報処理装置
EP3252595A1 (en) Method and device for running process
KR20070090649A (ko) 멀티 코어 시스템에서 협력적 스케줄링을 제공하는 장치 및방법
US20130205298A1 (en) Apparatus and method for memory overlay
US8478956B2 (en) Computing system and method controlling memory of computing system
US20060242375A1 (en) Program stack handling
US9158551B2 (en) Activating and deactivating Operating System (OS) function based on application type in manycore system
KR100735560B1 (ko) 가상 메모리를 제어하는 장치 및 방법
WO2014165514A1 (en) Embedded memory management scheme for real-time applications
US20190370072A1 (en) Methods, systems, articles of manufacture and apparatus to manage memory allocation
CN105612505B (zh) Cpu调度的方法和装置
CN115510423A (zh) 基于risc-v处理器的内存保护方法、控制装置及存储介质
JP2006126947A (ja) 情報処理装置、情報処理方法、およびプログラム
JP6241164B2 (ja) キャッシュメモリ制御プログラム,キャッシュメモリを内蔵するプロセッサ及びキャッシュメモリ制御方法
JP7087150B1 (ja) メモリ制御システム
CN113569231B (zh) 多进程的mpu保护方法、装置及电子设备
EP3502887B1 (en) Interrupt handling for multiple virtual machines
EP2434409A1 (en) Processor and method thereof

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: 20190329

Year of fee payment: 4