KR100770034B1 - 복수의 레지스터 파일을 이용한 문맥 교환 방법 및 시스템 - Google Patents

복수의 레지스터 파일을 이용한 문맥 교환 방법 및 시스템 Download PDF

Info

Publication number
KR100770034B1
KR100770034B1 KR1020060020115A KR20060020115A KR100770034B1 KR 100770034 B1 KR100770034 B1 KR 100770034B1 KR 1020060020115 A KR1020060020115 A KR 1020060020115A KR 20060020115 A KR20060020115 A KR 20060020115A KR 100770034 B1 KR100770034 B1 KR 100770034B1
Authority
KR
South Korea
Prior art keywords
state
context
register
register file
task
Prior art date
Application number
KR1020060020115A
Other languages
English (en)
Other versions
KR20070090418A (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 KR1020060020115A priority Critical patent/KR100770034B1/ko
Priority to US11/712,998 priority patent/US8327122B2/en
Publication of KR20070090418A publication Critical patent/KR20070090418A/ko
Application granted granted Critical
Publication of KR100770034B1 publication Critical patent/KR100770034B1/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
    • G06F9/462Saving or restoring of program or task context with multiple register sets
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25CHAND-HELD NAILING OR STAPLING TOOLS; MANUALLY OPERATED PORTABLE STAPLING TOOLS
    • B25C5/00Manually operated portable stapling tools; Hand-held power-operated stapling tools; Staple feeding devices therefor
    • B25C5/02Manually operated portable stapling tools; Hand-held power-operated stapling tools; Staple feeding devices therefor with provision for bending the ends of the staples on to the work
    • B25C5/0221Stapling tools of the table model type, i.e. tools supported by a table or the work during operation
    • B25C5/0242Stapling tools of the table model type, i.e. tools supported by a table or the work during operation having a pivoting upper leg and a leg provided with an anvil supported by the table or work
    • B25C5/025Stapling tools of the table model type, i.e. tools supported by a table or the work during operation having a pivoting upper leg and a leg provided with an anvil supported by the table or work the plunger being manually operated
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25CHAND-HELD NAILING OR STAPLING TOOLS; MANUALLY OPERATED PORTABLE STAPLING TOOLS
    • B25C5/00Manually operated portable stapling tools; Hand-held power-operated stapling tools; Staple feeding devices therefor
    • B25C5/10Driving means
    • B25C5/11Driving means operated by manual or foot power
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25CHAND-HELD NAILING OR STAPLING TOOLS; MANUALLY OPERATED PORTABLE STAPLING TOOLS
    • B25C5/00Manually operated portable stapling tools; Hand-held power-operated stapling tools; Staple feeding devices therefor
    • B25C5/16Staple-feeding devices, e.g. with feeding means, supports for staples or accessories concerning feeding devices
    • B25C5/1689Staple-feeding devices, e.g. with feeding means, supports for staples or accessories concerning feeding devices with means for indicating the number of staples remaining
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25CHAND-HELD NAILING OR STAPLING TOOLS; MANUALLY OPERATED PORTABLE STAPLING TOOLS
    • B25C7/00Accessories for nailing or stapling tools, e.g. supports

Abstract

본 발명은 문맥 교환 방법 및 시스템에 관한 것으로서, 더욱 상세하게는 복수의 레지스터 파일을 상태 전환하여 문맥 교환하고 문맥의 복구, 저장 작업을 분산시켜 수행함으로써 동적으로 생성된 태스크나 동적 링크에 대해서도 문맥 교환을 빠르게 수행할 수 있는 문맥 교환 방법 및 시스템에 관한 것이다. 본 발명의 문맥 교환 방법은 복수의 레지스터 파일을 유지하는 단계, 상기 복수의 레지스터 파일은 각각 프리패치 상태, 커런트 상태, 스토어 상태 중 하나의 상태로 설정하는 단계 및 문맥 교환 시, 상기 복수의 레지스터 파일의 상태를 각각 프리패치 상태, 커런트 상태, 스토어 상태 중 하나로 전환하여 설정하는 단계를 포함하고, 상기 프리패치 상태에서는 상기 레지스터 파일이 다음으로 수행할 태스크의 문맥을 읽어올 메모리 주소를 판단하고, 상기 커런트 상태에서는 상기 레지스터 파일의 태스크 문맥으로 중앙 처리 장치가 태스크를 수행하고, 상기 스토어 상태에서는 상기 레지스터 파일을 메모리에 저장하는 것을 특징으로 한다.
문맥 교환, 레지스터 파일, RTOS(Real Time Operating System), 태스크

Description

복수의 레지스터 파일을 이용한 문맥 교환 방법 및 시스템{METHOD AND SYSTEM FOR PROVIDING CONTEXT SWITCH USING MULTIPLE REGISTER FILE}
도 1은 종래 기술에서 태스크별로 레지스터 파일을 분할하여 사용하는 실시예를 도시한 도면.
도 2는 본 발명의 일실시예에 따른 문맥 교환 시스템의 구성을 도시한 도면.
도 3은 본 발명의 레지스터 파일 각각에서 수행되는 태스크 수행 순서의 일실시예를 도시한 도면.
도 4는 본 발명에서 일실시예에 따라 레지스터 파일의 상태를 전환하는 과정을 도시한 흐름도.
도 5는 본 발명의 메모리 인터페이스 모듈의 동작 과정을 도시한 흐름도.
<도면의 주요 부분에 대한 부호의 설명>
201: 제1 레지스터 파일
202: 제2 레지스터 파일
203: 제3 레지스터 파일
204: 메모리 인터페이스 모듈
205: 스테이트 레지스터
206: 제1 문맥 주소 레지스터 및 제1 카운트 레지스터
207: 제2 문맥 주소 레지스터 및 제2 카운트 레지스터
본 발명은 문맥 교환 방법 및 시스템에 관한 것으로서, 더욱 상세하게는 복수의 레지스터 파일을 상태 전환하여 문맥 교환하고 문맥의 복구, 저장 작업을 분산시켜 수행함으로써 동적으로 생성된 태스크나 동적 링크에 대해서도 문맥 교환을 빠르게 수행할 수 있는 문맥 교환 방법 및 시스템에 관한 것이다.
오늘날, 컴퓨팅 기술의 발달로 임베디드 시스템에서의 RTOS(Real-time Operating System)의 사용이 확산되고 있다. 그런데 이러한 RTOS 에서는 멀티 태스킹이 필수적이기 때문에 마이크로 컨트롤러, DSP 등의 프로세서에서 많은 레지스터의 문맥 교환(context switch)을 요구한다. 따라서 빠른 문맥 교환이 RTOS의 성능을 좌우하고 있다고 해도 과언이 아니다. 그런데, 이러한 문맥 교환 시간의 대부분은 레지스터의 저장/복구에 소요된다.
따라서, 레지스터의 저장/복구에 소요되는 시간을 감소시켜 문맥 교환 속도를 증가 시킬 수 있는 문맥 교환 방법의 개발이 절실하게 요청되는 실정이다.
또한, 종래 기술에 의하면 태스크가 사용하는 레지스터의 수를 수행 전에 분석하여 고정하고, 레지스터 개수에 맞게 레지스터 파일을 분할한다. 즉, 종래 기술은 레지스터 파일을 태스크 별로 분할하여 사용한다.
도 1은 종래 기술에서 태스크별로 레지스터 파일을 분할하여 사용하는 실시예를 도시한 도면이다. 도 1을 참조하면, 종래 기술의 문맥 교환 시스템은 레지스터 파일을 태스크 A를 위한 레지스터(101), 태스크 B를 위한 레지스터(102), 태스크 C를 위한 레지스터(103)로 분할하여 사용한다.
그러나, 이러한 종래 기술에 의하면 태스크 별로 레지스터 파일을 분할하여 사용하므로 용량이 큰 레지스터 파일이 요구되는 단점이 있다.
또한, 테스트가 사용할 전체 문맥이 정적으로 결정되므로, OS 함수가 사용될 때 사용되는 레지스터를 알 수 없는 단점이 있고, 동적 라이브러리 등에 의해 새로운 코드가 사용되거나, 함수 포인터가 사용될 때 정적인 레지스터 사용 및 분석이 어려운 단점이 있다.
또한 일시적으로 사용되는 레지스터에 대해서도 태스크 전체 문맥을 할당하는 단점이 있다.
따라서, 이러한 종래 기술의 단점을 해결하여 동적으로 생성된 태스크나 동적 링크에 대해서도 적용가능하고, 빠른 문맥 교환이 수행되는 문맥 교환 방법 및 시스템의 개발이 절실하게 요청되고 있다.
본 발명은 복수의 레지스터 파일을 포함하고, 각각의 레지스터 파일의 상태를 다르게 설정함으로써 메모리 버스의 사용량이 한꺼번에 증가하는 문제점을 해결하고, 문맥의 복구/저장 작업을 분산하여 수행하므로 빠른 문맥 교환을 가능하게 하는 문맥 교환 방법 및 시스템을 제공하는 것을 그 목적으로 한다.
또한, 본 발명은 문맥 교환이 일어나면 복수의 레지스터 파일 중 하나의 레지스터 파일을 프리패치 레지스터 파일로 설정하여, 다음에 수행될 태스크를 미리 예측하여 미리 태스크 문맥을 읽는 프리패치 작업을 수행하므로, 동적으로 생성된 태스크나 동적 링크에 대해서도 레지스터 파일을 할당하여 태스크를 수행할 수 있는 문맥 교환 방법 및 시스템을 제공하는 것을 또 다른 목적으로 한다.
또한, 본 발명은 문맥 교환 후, 다음으로 수행될 태스크의 문맥이 스토어 레지스터 파일에 저장되어 있을 경우 스토어 레지스터 파일을 커런트 상태로 전환하여 태스크 수행 속도를 향상 시킬 수 있는 문맥 교환 방법 및 시스템을 제공하는 것을 또 다른 목적으로 한다.
또한, 본 발명은 메모리 버스가 사용되지 않는지를 판단하여, 메모리 버스가 사용되고 있지 않을 때(idle) 스토어 레지스터 파일의 스토어 작업 또는 프리패치 레지스터 파일의 프리패치 작업을 수행하므로 중앙 처리 장치(CPU)의 문맥 교환 수행에 아무런 지장을 주지 않으면서 메모리 버스를 효율적으로 사용하여 문맥 교환을 수행할 수 있는 문맥 교환 방법 및 시스템을 제공하는 것을 또 다른 목적으로 한다.
상기의 목적을 달성하고 상술한 종래기술의 문제점을 해결하기 위하여, 본 발명의 일실시예에 따른 문맥 교환 방법은 복수의 레지스터 파일을 유지하는 단계, 상기 복수의 레지스터 파일은 각각 프리패치 상태, 커런트 상태, 스토어 상태 중 하나의 상태로 설정하는 단계, 및 문맥 교환 시, 상기 복수의 레지스터 파일의 상 태를 각각 프리패치 상태, 커런트 상태, 스토어 상태 중 하나로 전환하여 설정하는 단계를 포함하고, 상기 프리패치 상태에서는 상기 레지스터 파일이 다음으로 수행할 태스크의 문맥을 읽어올 메모리 주소를 판단하고, 상기 커런트 상태에서는 상기 레지스터 파일의 태스크 문맥으로 중앙 처리 장치가 태스크를 수행하고, 상기 스토어 상태에서는 상기 레지스터 파일을 메모리에 저장하는 것을 특징으로 한다.
또한, 본 발명의 다른 실시예에 따른 문맥 교환 시스템은 복수의 레지스터 파일을 각각 프리패치 상태, 커런트 상태, 스토어 상태 중 하나의 상태로 설정하고, 문맥 교환 시 상기 복수의 레지스터 파일의 상태를 각각 프리패치 상태, 커런트 상태, 스토어 상태 중 하나로 전환하여 설정하는 메모리 인터페이스 모듈을 포함하고, 상기 메모리 인터페이스 모듈은 상기 프리패치 상태의 상기 레지스터 파일이 다음으로 수행할 태스크의 문맥을 읽어올 메모리 주소를 판단하고, 상기 커런트 상태의 상기 레지스터 파일의 태스크 문맥으로 중앙 처리 장치가 태스크를 수행하도록 하고, 상기 스토어 상태의 상기 레지스터 파일을 메모리에 저장하는 것을 특징으로 한다.
이하 첨부된 도면을 참조하여 본 발명에 따른 문맥 교환 방법 및 시스템에 대하여 상세히 설명한다.
도 2는 본 발명의 일실시예에 따른 문맥 교환 시스템의 구성을 도시한 도면이다.
도 2를 참조하면, 본 발명의 문맥 교환 시스템은 제1 레지스터 파일(201), 제2 레지스터 파일(202), 제3 레지스터 파일(203)을 포함한다.
상기 레지스터 파일들(201, 202, 203)은 각각
(1) 다음에 수행될 태스크를 미리 예측하여 태스크 문맥을 읽어 온 레지스터 집합인 프리패치 레지스터 파일(Prefetch Register File, PRF),
(2) 현재 태스크 문맥으로 중앙 처리 장치가 작업을 수행하는 커런트 레지스터 파일(Current Register File, CRF),
(3) 이전 태스크가 사용하던 레지스터 집합으로 문맥 교환시 저장되어야 할 레지스터 집합인 스토어 레지스터 파일(Store Register File, SRF)
중 하나로 설정된다.
메모리 인터페이스 모듈(204)은 중앙 처리 장치 또는 메모리와 연동하여 레지스터 파일의 저장, 태스크 수행 및 복구를 수행한다.
메모리 인터페이스 모듈(204)은 스테이트 레지스터(205)를 포함하여, 레지스터 파일들의 상태를 기록한다.
이하에서는, 다음에 수행될 태스크를 미리 예측하여 태스크 문맥을 읽어 오는 작업을 프리패치(prefetch) 작업, 현재 태스크 문맥으로 작업을 수행하는 작업을 커런트(current) 작업, 이전 태스크가 사용하던 레지스터 집합을 문맥 교환 시 저장하는 작업을 스토어(store) 작업이라 한다.
각각의 레지스터 파일에서는 상기 프리패치 작업, 커런트 작업, 스토어 작업이 순서대로 수행되고, 스테이트 레지스터(205)에는 레지스터 파일 각각의 상태 정보가 기록된다. 일례로, 레지스터 파일이 프리패치 상태일 때에는 1, 커런트 상태일 때는 0, 스토어 상태일 때에는 2로 설정할 수 있다.
각각의 레지스터 파일의 상태는 문맥 교환이 발생할 때마다 다른 상태로 바뀌고, 본 발명의 문맥 교환 시스템은 스테이트 레지스터(205)에 기록된 값에 따라 MUX/DEMUX를 조절하여 레지스터 파일들의 상태를 전환할 수 있다. 즉, 본 발명의 문맥 교환 시스템은 레지스터 파일의 상태가 전환되면 상태 정보를 변경하여 스테이트 레지스터(205)에 갱신할 수 있다.
본 발명의 문맥 교환 시스템은 프리패치 작업을 위한 제1 문맥 주소 및 제1 카운트 레지스터(206)를 포함하고, 스토어 작업을 위한 제2 문맥 주소 및 제2 카운트 레지스터(207)를 포함할 수 있다.
도 3은 본 발명의 레지스터 파일 각각에서 수행되는 태스크 수행 순서의 일실시예를 도시한 도면이다.
도 3을 참조하면, 본 발명의 레지스터 파일은 프리패치 작업이 수행되는 단계(S301), 커런트 작업이 수행되는 단계(S302), 스토어 작업이 수행되는 단계(S303)를 순서대로 수행하여 태스크 수행이 완료된다. 각 단계는 문맥 교환이 발생하면 다음 단계로 전환된다.
본 발명의 문맥 교환 시스템은 프리패치 레지스터 파일에서 프리패치 작업(S301)이 수행될 때, 제1 문맥 주소 레지스터(Context Adress Register, 206)에 다음으로 수행될 태스크의 문맥을 읽어 올 메모리 주소의 시작 번지를 기록하고, 스테이트 레지스터 값은 1로 설정한다
또한, 본 발명의 문맥 교환 시스템은 커런트 레지스터 파일에서 커런트 작업(S302)이 수행될 때, 스테이트 레지스터 값을 0으로 설정한다.
또한, 본 발명의 문맥 교환 시스템은 스토어 레지스터 파일에서 스토어 작업(S303)이 수행될 때, 제2 문맥 주소 레지스터(Context Adress Register, 206) 에 레지스터를 저장할 메모리 주소의 시작 번지를 기록하고, 스테이트 레지스터의 값은 2로 설정한다.
한편, 본 발명은 복수의 레지스터 파일을 포함하고, 상기 복수의 레지스터 파일의 상태를 각각 다른 상태로 유지한다.
즉, 제1 레지스터 파일이 커런트 상태일 경우, 제2 레지스터 파일은 프리패치 상태, 제3 레지스터 파일은 스토어 상태로 유지한다. 문맥 교환이 발생하면, 제1 레지스터 파일은 스토어 상태, 제2 레지스터 파일은 커런트 상태, 제3 레지스터 파일은 프리패치 상태로 전환된다. 마찬가지로 다시 문맥 교환이 발생하면, 제1 레지스터 파일은 프리패치 상태, 제2 레지스터 파일은 스토어 상태, 제3 레지스터 파일은 커런트 상태로 전환된다.
따라서, 본 발명은 3 개의 레지스터 파일을 포함하고, 각각의 레지스터 파일의 상태를 다르게 설정함으로써 메모리 버스의 사용량이 한꺼번에 증가하는 문제점을 해결하고, 문맥의 복구/저장 작업을 분산하여 수행하므로 빠른 문맥 교환을 가능하게 하는 효과가 있다.
또한, 본 발명은 문맥 교환이 일어나면 복수의 레지스터 파일 중 하나의 레지스터 파일을 프리패치 레지스터 파일로 설정하여, 다음에 수행될 태스크를 미리 예측하여 미리 태스크 문맥을 읽는 프리패치 작업을 수행하므로, 동적으로 생성된 태스크나 동적 링크에 대해서도 레지스터 파일을 할당하여 태스크를 수행할 수 있는 효과가 있다.
그런데, 문맥 교환 후, 다음으로 수행될 태스크의 문맥이 스토어 레지스터 파일에 저장되어 있을 경우가 발생할 수 있는데, 이러한 경우 스토어 레지스터 파일을 커런트 상태로 전환하면 재차로 태스크 문맥을 읽을 필요가 없다. 이와 같은 경우를 도 4를 참조하여 설명한다.
도 4는 본 발명에서 일실시예에 따라 레지스터 파일의 상태를 전환하는 과정을 도시한 흐름도이다. 도 4를 참조하면, 본 발명의 문맥 교환 시스템은 단계(S401)에서 문맥 교환시 스토어 레지스터 파일에 다음 태스크의 문맥이 저장되어 있는 지를 판단한다.
단계(S401)의 판단 결과, 스토어 레지스터 파일에 다음 태스크의 문맥이 저장되어 있는 경우, 문맥 교환 시스템은 단계(S402)에서 스토어 레지스터 파일을 커런트 상태로 전환한다. 커런트 상태로의 전환은 스테이트 레지스터를 0으로 설정함으로써 변경 가능하다.
또한, 단계(S402)에서 문맥 교환 시스템은 커런트 레지스터 파일을 스토어 상태로 전환한다. 스토어 상태로의 전환은 스테이트 레지스터를 2로 설정함으로써 변경 가능하다. 이 때, 제2 문맥 주소 레지스터(207)에 문맥을 저장할 메모리 주소를 기록하고, 제2 카운터는 0으로 설정한다.
3개의 레지스터 파일 중 나머지 파일인 프리패치 레지스터 파일은 다시 프리패치 상태로 설정하여 스테이트 레지스터를 1로 설정하고, 제1 문맥 주소 레지스터(206)에 다음 순위 태스크의 문맥 주소를 저장하고, 제1 카운트를 0으로 설정한다.
단계(S403)에서 문맥 교환 시스템은 메모리 인터페이스 모듈을 가동하여 레 지스터 파일들이 변경된 상태에서 태스크를 수행되도록 한다.
단계(S401)의 판단 결과 스토어 레지스터 파일에 다음 태스크의 문맥이 저장되어 있지 않은 경우, 단계(S404)에서 문맥 교환 시스템은 그대로 메모리 인터페이스 모듈을 가동하여 태스크를 수행하고, 단계(S405)에서 프리패치 레지스터 파일에 다음 태스크의 문맥이 저장되어 있는지를 판단한다.
단계(S405)의 판단 결과, 다음 태스크의 문맥이 저장되어 있는 경우, 단계(406)에서 커렌트 레지스터 파일을 스토어 상태로 전환하고, 프리패치 레지스터 파일을 커런트 상태로 전환하고, 스토어 레지스터 파일을 프리패치 상태로 전환한 후, 단계(S407)에서 다다음 순서의 태스크 문맥을 판단하여 프리패치 레지스터 파일의 문맥 주소로 제1 문맥 주소 레지스터에 저장한다.
단계(S406)의 판단 결과, 프리패치 레지스터 파일에 다음 태스크의 문맥이 저장되어 있지 않은 경우, 문맥 교환 시스템은 단계(S408)에서 저장 레지스터 파일을 스토어 상태로 전환하고, 스토어 레지스터 파일을 커런트 상태로 전환하고 단계(S409)에서 커렌트 레지스터 파일에 다음 태스크의 문맥을 패치한다.
따라서 본 발명은 문맥 교환 후, 다음으로 수행될 태스크의 문맥이 스토어 레지스터 파일에 저장되어 있을 경우 스토어 레지스터 파일을 커런트 상태로 전환하여 태스크 수행 속도를 향상 시킬 수 있는 효과가 있다.
한편, 본 발명은 복수의 레지스터 파일의 상태를 변환하여 태스크를 수행하므로, 메모리 버스를 효율적으로 사용할 필요가 있다.
따라서, 본 발명의 메모리 인터페이스 모듈은 메모리 버스가 사용되고 있는 지를 판단하여 메모리 버스가 사용되고 있지 않을 때, 이전 태스크가 사용하던 레지스터 집합을 메모리에 저장하는 스토어 작업과 다음에 수행될 태스크를 예측하여 미리 태스크 문맥을 읽는 프리패치 작업을 수행한다.
도 5는 본 발명의 메모리 인터페이스 모듈의 동작 과정을 도시한 흐름도이다. 도 5을 참조하면, 본 발명의 문맥 교환 시스템은 단계(S501)에서 메모리 버스가 사용되고 있는지, 사용되고 있지 않는지를 판단한다. 단계(S501)의 판단 결과 메모리 버스가 사용되지 않으면, 단계(S502)에서 본 발명의 문맥 교환 시스템은 스토어 레지스터 파일에서 스토어 작업이 완료되었는지를 판단한다.
단계(S502)의 판단 결과, 스토어 레지스터 파일에서 스토어가 완료되지 않았으면 문맥 교환 시스템은 단계(S503)에서 제2 카운트(207)에 기록된 숫자 N 번째의 레지스터를 (문맥 주소 + N)의 메모리 주소에 저장하여 스토어 작업을 수행한다. 다음으로 단계(S504)에서 문맥 교환 시스템은 카운트에 제2 카운트에 1을 추가하여 기록하고, 다시 단계(S501)로 돌아가서 메모리 버스가 사용되지 않는가를 판단한다.
단계(S502)의 판단 결과 스토어 레지스터 파일에서 스토어 작업이 완료되면, 단계(S505)에서 본 발명의 문맥 교환 시스템은 프리패치 레지스터 파일에서 프리패치 작업이 완료되었는지를 판단하고, 완료되지 않았으면 단계(S506)에서 제1 카운트에 기록된 숫자 M번째의 레지스터에 메모리 (문맥 주소 +M)에 기록된 태스크 문맥을 로딩하고, 제1 카운트에 1을 추가하여 기록하고, 다시 단계(S501)로 돌아가서 메모리 버스가 사용되지 않는 가를 판단한다.
따라서 본 발명은 메모리 버스가 사용되지 않는지를 판단하여, 메모리 버스가 사용되고 있지 않을 때(idle) 스토어 레지스터 파일의 스토어 작업 또는 프리패치 레지스터 파일의 프리패치 작업을 수행하므로 CPU의 문맥 교환 수행에 아무런 지장을 주지 않으면서 메모리 버스를 효율적으로 사용하여 문맥 교환을 수행할 수 있는 효과가 있다.
본 발명에 따른 문맥 교환 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 상기 매체는 프로그램 명령, 데이터 구조 등을 지정하는 신호를 전송하는 반송파를 포함하는 광 또는 금속선, 도파관 등의 전송 매체일 수도 있다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 이는 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 따라서, 본 발명 사상은 아래에 기재된 특허청구범위에 의해서만 파악되어야 하고, 이의 균등 또는 등가적 변형 모두는 본 발명 사상의 범주에 속한다고 할 것이다.
따라서, 본 발명은 3 개의 레지스터 파일을 포함하고, 각각의 레지스터 파일의 상태를 다르게 설정함으로써 메모리 버스의 사용량이 한꺼번에 증가하는 문제점을 해결하고, 문맥의 복구/저장 작업을 분산하여 수행하므로 빠른 문맥 교환을 가능하게 하는 효과가 있다.
또한, 본 발명은 문맥 교환이 일어나면 복수의 레지스터 파일 중 하나의 레지스터 파일을 프리패치 레지스터 파일로 설정하여, 다음에 수행될 태스크를 미리 예측하여 미리 태스크 문맥을 읽는 프리패치 작업을 수행하므로, 동적으로 생성된 태스크나 동적 링크에 대해서도 레지스터 파일을 할당하여 태스크를 수행할 수 있는 효과가 있다.
또한, 본 발명은 문맥 교환 후, 다음으로 수행될 태스크의 문맥이 스토어 레지스터 파일에 저장되어 있을 경우 스토어 레지스터 파일을 커런트 상태로 전환하여 태스크 수행 속도를 향상 시킬 수 있는 효과가 있다.
또한, 본 발명은 메모리 버스가 사용되지 않는지를 판단하여, 메모리 버스가 사용되고 있지 않을 때(idle) 스토어 레지스터 파일의 스토어 작업 또는 프리패치 레지스터 파일의 프리패치 작업을 수행하므로 CPU의 문맥 교환 수행에 아무런 지장을 주지 않으면서 메모리 버스를 효율적으로 사용하여 문맥 교환을 수행할 수 있는 효과가 있다.

Claims (15)

  1. 복수의 레지스터 파일을 유지하는 단계;
    상기 복수의 레지스터 파일은 각각 프리패치 상태, 커런트 상태, 스토어 상태 중 하나의 상태로 설정하는 단계; 및
    문맥 교환 시, 상기 복수의 레지스터 파일의 상태를 각각 프리패치 상태, 커런트 상태, 스토어 상태 중 하나로 전환하여 설정하는 단계
    를 포함하고,
    상기 프리패치 상태에서는 상기 레지스터 파일이 다음으로 수행할 태스크의 문맥을 읽어올 메모리 주소를 판단하고, 상기 커런트 상태에서는 상기 레지스터 파일의 태스크 문맥으로 중앙 처리 장치가 태스크를 수행하고, 상기 스토어 상태에서는 상기 레지스터 파일을 메모리에 저장하는 것을 특징으로 하는 문맥 교환 방법.
  2. 제1항에 있어서,
    상기 프리패치 상태는, 상기 레지스터 파일이 다음으로 수행할 태스크의 문맥을 읽어올 메모리 주소의 시작 번지를 제1 문맥 주소 레지스터에 기록하는 것을 특징으로 하는 문맥 교환 방법.
  3. 제1항에 있어서,
    상기 스토어 상태는, 상기 레지스터 파일을 저장할 메모리 주소의 시작 번지를 제2 문맥 주소 레지스터에 기록하는 것을 특징으로 하는 문맥 교환 방법.
  4. 제1항에 있어서,
    상기 복수의 레지스터 파일의 상태 정보를 스테이트 레지스터에 기록하는 단계; 및
    상기 레지스터 파일의 상태가 전환되면 상기 상태 정보를 변경하여 상기 스테이트 레지스터에 갱신하는 단계
    를 더 포함하는 것을 특징으로 하는 문맥 교환 방법.
  5. 제1항에 있어서,
    상기 복수의 레지스터 파일은 각각 다른 상태로 설정되는 것을 특징으로 하는 문맥 교환 방법.
  6. 제1항에 있어서,
    문맥 교환 시, 상기 복수의 레지스터 파일의 상태를 각각 프리패치 상태, 커런트 상태, 스토어 상태 중 하나로 전환하여 설정하는 상기 단계는,
    상기 문맥 교환 시, 상기 복수의 레지스터 파일 중 스토어 상태의 레지스터 파일에 다음으로 수행할 태스크의 문맥이 저장되어 있는지를 판단하는 단계;
    상기 태스크의 문맥이 저장되어 있는 것으로 판단되면 상기 스토어 상태의 레지스터 파일을 커런트 상태로 전환하는 단계
    를 포함하는 것을 특징으로 하는 문맥 교환 방법.
  7. 제1항에 있어서,
    메모리 버스가 사용되고 있는지를 판단하여, 상기 메모리 버스가 사용되고 있지 않은 경우, 상기 스토어 상태의 레지스터 파일을 상기 메모리에 저장하거나, 상기 프리패치 상태의 레지스터 파일에서 다음으로 수행할 태스크의 문맥을 읽어올 메모리 주소를 판단하는 단계
    를 더 포함하는 것을 특징으로 하는 문맥 교환 방법.
  8. 제1항 내지 제7항 중 어느 한 항의 방법을 실행하기 위한 프로그램이 기록되어 있는 것을 특징으로 하는 컴퓨터에서 판독 가능한 기록 매체.
  9. 복수의 레지스터 파일을 각각 프리패치 상태, 커런트 상태, 스토어 상태 중 하나의 상태로 설정하고, 문맥 교환 시 상기 복수의 레지스터 파일의 상태를 각각 프리패치 상태, 커런트 상태, 스토어 상태 중 하나로 전환하여 설정하는 메모리 인터페이스 모듈
    을 포함하고,
    상기 메모리 인터페이스 모듈은 상기 프리패치 상태의 상기 레지스터 파일이 다음으로 수행할 태스크의 문맥을 읽어올 메모리 주소를 판단하고, 상기 커런트 상 태의 상기 레지스터 파일의 태스크 문맥으로 중앙 처리 장치가 태스크를 수행하도록 하고, 상기 스토어 상태의 상기 레지스터 파일을 메모리에 저장하는 것을 특징으로 하는 문맥 교환 시스템.
  10. 제9항에 있어서,
    상기 메모리 인터페이스 모듈은, 상기 프리패치 상태의 상기 레지스터 파일이 다음으로 수행할 태스크의 문맥을 읽어올 메모리 주소의 시작 번지를 제1 문맥 주소 레지스터에 기록하는 것을 특징으로 하는 문맥 교환 시스템.
  11. 제9항에 있어서,
    상기 메모리 인터페이스 모듈은, 상기 스토어 상태의 상기 레지스터 파일을 저장할 메모리 주소의 시작 번지를 제2 문맥 주소 레지스터에 기록하는 것을 특징으로 하는 문맥 교환 시스템.
  12. 제9항에 있어서,
    상기 메모리 인터페이스 모듈은,
    상기 복수의 레지스터 파일의 상태 정보를 스테이트 레지스터에 기록하고, 상기 복수의 레지스터 파일의 상태가 전환되면 상기 상태 정보를 변경하여 상기 스테이트 레지스터에 갱신하는 것을 특징으로 하는 문맥 교환 시스템.
  13. 제9항에 있어서,
    상기 메모리 인터페이스 모듈은,
    상기 복수의 레지스터 파일을 각각 다른 상태로 설정하는 것을 특징으로 하는 문맥 교환 시스템.
  14. 제9항에 있어서,
    상기 메모리 인터페이스 모듈은,
    상기 문맥 교환 시, 상기 복수의 레지스터 파일 중 스토어 상태의 레지스터 파일에 다음으로 수행할 태스크의 문맥이 저장되어 있는지를 판단하고, 상기 태스크의 문맥이 저장되어 있는 것으로 판단되면 상기 스토어 상태의 레지스터 파일을 커런트 상태로 전환하는 것을 특징으로 하는 문맥 교환 시스템.
  15. 제9항에 있어서,
    상기 메모리 인터페이스 모듈은,
    메모리 버스가 사용되고 있는지를 판단하여, 상기 메모리 버스가 사용되고 있지 않은 경우, 상기 스토어 상태의 레지스터 파일을 상기 메모리에 저장하거나, 상기 프리패치 상태의 레지스터 파일에서 다음으로 수행할 태스크의 문맥을 읽어올 메모리 주소를 판단하는 것을 특징으로 하는 문맥 교환 시스템.
KR1020060020115A 2006-03-02 2006-03-02 복수의 레지스터 파일을 이용한 문맥 교환 방법 및 시스템 KR100770034B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020060020115A KR100770034B1 (ko) 2006-03-02 2006-03-02 복수의 레지스터 파일을 이용한 문맥 교환 방법 및 시스템
US11/712,998 US8327122B2 (en) 2006-03-02 2007-03-02 Method and system for providing context switch using multiple register file

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060020115A KR100770034B1 (ko) 2006-03-02 2006-03-02 복수의 레지스터 파일을 이용한 문맥 교환 방법 및 시스템

Publications (2)

Publication Number Publication Date
KR20070090418A KR20070090418A (ko) 2007-09-06
KR100770034B1 true KR100770034B1 (ko) 2007-10-26

Family

ID=38534973

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060020115A KR100770034B1 (ko) 2006-03-02 2006-03-02 복수의 레지스터 파일을 이용한 문맥 교환 방법 및 시스템

Country Status (2)

Country Link
US (1) US8327122B2 (ko)
KR (1) KR100770034B1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8789025B2 (en) * 2010-07-14 2014-07-22 International Business Machines Corporation Path-sensitive analysis for reducing rollback overheads
US9098271B2 (en) * 2012-02-05 2015-08-04 Jeffrey R. Eastlack Autonomous microprocessor re-configurability via power gating pipelined execution units using static profiling
KR101973157B1 (ko) * 2012-02-06 2019-04-26 삼성전자주식회사 캐시 관리 장치 및 방법
US10802866B2 (en) * 2015-04-30 2020-10-13 Microchip Technology Incorporated Central processing unit with DSP engine and enhanced context switch capabilities
US11157281B2 (en) * 2018-05-24 2021-10-26 International Business Machines Corporation Prefetching data based on register-activity patterns
WO2023121831A1 (en) * 2021-12-22 2023-06-29 SiFive, Inc. Configuring a prefetcher associated with a processor core

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0528092A (ja) * 1991-07-22 1993-02-05 Hitachi Ltd マイクロプロセツサ
KR19980024866A (ko) * 1996-09-30 1998-07-06 김영환 기억 서브시스템 타겟 디바이스에서 다중 콘텍스트등을 자동적으로 스위칭하는 방법 및 구조체
KR20010070469A (ko) * 2000-01-07 2001-07-25 비센트 비.인그라시아, 알크 엠 아헨 고속의 낮은 오버헤드 콘텍스트 스위치를 실행하는디바이스 및 방법
US6868490B1 (en) 2000-06-21 2005-03-15 Pts Corporation Methods and apparatus for providing context switching between software tasks with reconfigurable control

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03186928A (ja) * 1989-12-16 1991-08-14 Mitsubishi Electric Corp データ処理装置
US6757809B1 (en) * 1989-12-16 2004-06-29 Renesas Technology Corp. Data processor having 2n bits width data bus for context switching functions
JPH0683639A (ja) 1992-09-02 1994-03-25 Mitsubishi Electric Corp レジスタ装置
JP3605978B2 (ja) 1997-01-17 2004-12-22 松下電器産業株式会社 マイクロコンピュータ
US5968157A (en) * 1997-01-23 1999-10-19 Sun Microsystems, Inc. Locking of computer resources
US6128728A (en) * 1997-08-01 2000-10-03 Micron Technology, Inc. Virtual shadow registers and virtual register windows
US7272703B2 (en) * 1997-08-01 2007-09-18 Micron Technology, Inc. Program controlled embedded-DRAM-DSP architecture and methods
US6128641A (en) * 1997-09-12 2000-10-03 Siemens Aktiengesellschaft Data processing unit with hardware assisted context switching capability
US6272520B1 (en) * 1997-12-31 2001-08-07 Intel Corporation Method for detecting thread switch events
US6408325B1 (en) * 1998-05-06 2002-06-18 Sun Microsystems, Inc. Context switching technique for processors with large register files
US6230230B1 (en) * 1998-12-03 2001-05-08 Sun Microsystems, Inc. Elimination of traps and atomics in thread synchronization
US6292888B1 (en) * 1999-01-27 2001-09-18 Clearwater Networks, Inc. Register transfer unit for electronic processor
DE19955776C1 (de) * 1999-11-19 2001-07-19 Infineon Technologies Ag Multitasking-Prozessorsystem
US6662297B1 (en) * 1999-12-30 2003-12-09 Intel Corporation Allocation of processor bandwidth by inserting interrupt servicing instructions to intervene main program in instruction queue mechanism
JP3767529B2 (ja) 2001-08-28 2006-04-19 ソニー株式会社 マイクロプロセッサ
US6957323B2 (en) * 2001-11-14 2005-10-18 Elan Research, Inc. Operand file using pointers and reference counters and a method of use
US20040128475A1 (en) * 2002-12-31 2004-07-01 Gad Sheaffer Widely accessible processor register file and method for use
DE602004017879D1 (de) * 2003-08-28 2009-01-02 Mips Tech Inc Integrierter mechanismus zum suspendieren und endznem prozessor
JP4047783B2 (ja) 2003-09-01 2008-02-13 沖電気工業株式会社 タスク制御方法とタスク切替装置
US7434004B1 (en) * 2004-06-17 2008-10-07 Sun Microsystems, Inc. Prefetch prediction
US6888490B1 (en) * 2004-07-20 2005-05-03 Raytheon Company Spatial multibeam ambiguity resolving technique (SMART)
US7600101B2 (en) * 2005-01-13 2009-10-06 Hewlett-Packard Development Company, L.P. Multithreaded hardware systems and methods
US20060253690A1 (en) * 2005-05-04 2006-11-09 Tien-Fu Chen Bulk preload and poststore technique system and method applied on a unified advanced VLIW (very long instruction word) DSP (digital signal processor)
US20060277396A1 (en) * 2005-06-06 2006-12-07 Renno Erik K Memory operations in microprocessors with multiple execution modes and register files
US20070055852A1 (en) * 2005-09-06 2007-03-08 Alcatel Processing operation management systems and methods
US7383393B2 (en) * 2005-10-28 2008-06-03 Freescale Semiconductor, Inc. System and method for cooperative prefetching
US7624257B2 (en) * 2005-11-30 2009-11-24 International Business Machines Corporation Digital data processing apparatus having hardware multithreading support including a register set reserved for special class threads

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0528092A (ja) * 1991-07-22 1993-02-05 Hitachi Ltd マイクロプロセツサ
KR19980024866A (ko) * 1996-09-30 1998-07-06 김영환 기억 서브시스템 타겟 디바이스에서 다중 콘텍스트등을 자동적으로 스위칭하는 방법 및 구조체
KR20010070469A (ko) * 2000-01-07 2001-07-25 비센트 비.인그라시아, 알크 엠 아헨 고속의 낮은 오버헤드 콘텍스트 스위치를 실행하는디바이스 및 방법
US6868490B1 (en) 2000-06-21 2005-03-15 Pts Corporation Methods and apparatus for providing context switching between software tasks with reconfigurable control

Also Published As

Publication number Publication date
KR20070090418A (ko) 2007-09-06
US20070226474A1 (en) 2007-09-27
US8327122B2 (en) 2012-12-04

Similar Documents

Publication Publication Date Title
KR100934533B1 (ko) 연산 처리 시스템, 컴퓨터 시스템 상에서의 태스크 제어 방법, 및 컴퓨터 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체
US7949839B2 (en) Managing memory pages
US8453121B2 (en) Managing the tracing of the execution of a computer program
US9003146B2 (en) Managing memory of a computer
KR100770034B1 (ko) 복수의 레지스터 파일을 이용한 문맥 교환 방법 및 시스템
US11068268B2 (en) Data structure processing
KR20030072550A (ko) 데이터 처리장치와 복귀상태의 저장방법
CN101847096B (zh) 包含栈变量函数的优化方法
JP2009157684A (ja) 仮想化プログラム、シミュレーション装置、仮想化方法
KR100883655B1 (ko) 재구성 가능한 프로세서를 갖는 문맥 교환 시스템 및 방법
KR101996641B1 (ko) 메모리 오버레이 장치 및 방법
US20060149940A1 (en) Implementation to save and restore processor registers on a context switch
JP2009087282A (ja) 並列計算システムおよび並列計算方法
CN112925606A (zh) 一种内存管理方法、装置及设备
JP2007094986A (ja) シミュレーション装置およびシミュレーション方法
KR102076248B1 (ko) 선택 지연 가비지 컬렉션 방법 및 이를 이용한 메모리 시스템
CN114490054A (zh) 上下文切换方法、装置、加速单元、电子设备和片上系统
US10521156B2 (en) Apparatus and method of managing multi solid state disk system
US8732721B2 (en) Method for reducing trap overhead when executing a guest in a virtual machine
JP2003263366A (ja) スワッピング制御方法及びその実施装置並びにその処理プログラム
US11481250B2 (en) Cooperative workgroup scheduling and context prefetching based on predicted modification of signal values
CN117591267B (zh) 一种任务处理方法、设备、介质及系统
US20210389985A1 (en) Data processing method, electronic device, and storage medium
KR20110067795A (ko) 실시간 프로세스의 응답성 개선을 위한 tcm운용방법
CN115658324A (zh) 一种进程调度方法、计算设备及存储介质

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
G170 Publication of correction
FPAY Annual fee payment

Payment date: 20120914

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20130924

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20140922

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20150916

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20160921

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20180927

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20190930

Year of fee payment: 13