KR20080078133A - 프로세서의 추론적 로드 명령 실행 방법 및 상기 방법을채용한 프로세서 - Google Patents
프로세서의 추론적 로드 명령 실행 방법 및 상기 방법을채용한 프로세서 Download PDFInfo
- Publication number
- KR20080078133A KR20080078133A KR1020070017777A KR20070017777A KR20080078133A KR 20080078133 A KR20080078133 A KR 20080078133A KR 1020070017777 A KR1020070017777 A KR 1020070017777A KR 20070017777 A KR20070017777 A KR 20070017777A KR 20080078133 A KR20080078133 A KR 20080078133A
- Authority
- KR
- South Korea
- Prior art keywords
- load
- instruction
- physical memory
- processor
- command
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 53
- 230000015654 memory Effects 0.000 claims abstract description 133
- 238000013507 mapping Methods 0.000 claims abstract description 19
- 238000012217 deletion Methods 0.000 abstract description 2
- 230000037430 deletion Effects 0.000 abstract description 2
- 238000012545 processing Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000007796 conventional method Methods 0.000 description 2
- 230000007257 malfunction Effects 0.000 description 2
- 238000000205 computational method Methods 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
본 발명은 프로세서의 연산 방법에 있어서, 실제로 메모리에 액세스 하는 경우에만 연산을 실행하고 그 이외의 경우에는 연산이 취소되는 로드 명령을 사용함으로써, 추론적 로드 명령 실행시 입출력 매핑 메모리 등을 액세스하여 발생할 수 있는 문제점을 소프트웨어적인 방법만으로 해소하고 궁극적으로 프로세서의 성능 향상을 실현할 수 있는 방법에 관한 것이다.
프로세서, 추론, 예측, 로드 명령, 코어, 메모리, 소프트웨어, 액세스
Description
도 1은 본 발명의 일례에 따른 프로세서의 추론적 로드 명령 실행 방법을 도시한 순서도이다.
도 2는 본 발명에 따른 프로세서의 추론적 로드 명령 실행에 대한 명령 코드의 순차적 흐름을 도시한 것이다.
도 3은 본 발명의 일례에 따른 프로세서의 구성도이다.
도 4는 본 발명의 일례에 따른 프로세서 코어의 구성도이다.
<도면의 주요 부분에 대한 부호의 설명>
300: 프로세서 코어
310: 물리적 메모리
320: 제1 입출력 매핑 메모리
321: 제2 입출력 매핑 메모리
본 발명은 프로세서의 연산 방법에 관한 것으로, 더욱 상세하게는 프로세서가 추론적 로드 명령을 실행함에 있어서, 하드웨어의 추가 없이도 간단한 소프트웨어적인 개선만으로 프로세스의 성능 향상을 실현할 수 있으며, 입출력 매핑 메모리 등에 액세스하여 발생하는 문제점을 해소한 프로세서의 연산 방법에 관한 것이다.
프로세서(processor)는 CPU(Central Processing Unit) 또는 중앙 연산 처리 장치라고도 하며, 명령어의 해석과 자료의 연산 및 비교 등의 처리를 제어하는 컴퓨터 시스템의 핵심적인 장치이다. 이와 같은 프로세서는 연산 명령을 실행하는 프로세서 코어 및 프로세서 코어가 처리할 수 있는 명령 및 데이터를 저장하고 있는 메모리를 포함하여 구성된다.
프로세서 코어(processor core)는 메모리로부터 분기 명령을 실행할 때 메모리로부터 분기 명령을 가져와(fetch) 해석하고(decode), 실행하는 역할을 한다.
종래의 프로세서의 보수적인(conservative) 방법에 의한 로드 명령 실행에서는, 로드 명령의 실행 중에는 분기 명령의 실행 중에 발생하는 지연의 시간 동안 어떠한 연산 명령도 실행하지 않는다. 따라서, 분기 명령 시에 발생하는 지연의 기간 동안만큼의 성능의 저하가 발생한다.
또한, 보수적인 방법에 따른 문제점을 해결하고자 제안된 추론적(speculative) 로드 명령 실행에 있어서는, 잘못된 추론적(mis-speculation) 방법에 의해 로드 명령을 실행하는 경우에는 메모리에 매핑된 입출력 레지스터(memory-mapped I/O register)에 접근하여 입출력 장치의 데이터를 파괴 및 오동작하게 하거나, 페이지 폴트(page fault)의 발생을 초래할 수 있는 단점이 있다.
한편, 종래 또다른 추론적 로드 명령 실행 방법에서는 로드 명령에 식별자를 첨부하여 식별자가 첨부된 로드 명령에 한해서 추론적 방법에 의한 로드 명령이 이루어지도록 한다. 이 방법에서는 체크(check) 명령을 사용하여 레지스터에 저장되어 있는 값을 사용하기 전에 입출력 데이터를 파괴, 페이지 폴트 등의 예외(exception) 상황이 발생했는가를 판단하고, 예외 상황이 발생하지 않는 경우에는 정상적으로 레지스터에 저장되어 있는 값을 사용하고, 예외 상황이 발생했을 경우에는 잘못된 값이 저장되어 있을 수 있으므로 레지스터 값을 사용하기 전 체크(check)명령에 의해 명시된 방법으로 예외 상황을 처리하게 된다. 그러나, 이러한 방법은 예외 상황의 발생 여부를 저장하고 체크(check) 연산 명령을 통해 예외 상황의 발생시 복구 명령을 실행하여야 한다는 점에서, 하드웨어 및 컴파일러 측면 모두에서 복잡한 구성을 필요로 하여 추가 비용이 발생하는 단점이 있었다.
이에 본 발명은, 추론적 방법에 의한 로드 명령을 실행할 때 간단한 소프트웨어적인 방법만으로도 예외 상황을 처리할 수 있는 방법을 새로이 제안하고자 한다.
본 발명은 상기와 같은 종래 기술을 개선하기 위해 안출된 것으로서, 소프트웨어 적인 방법에 의하여 분기 명령 시에 추론적 방법을 실시하는 것이 가능하도록 하여, 분기 명령 시에 추론적 방법의 실행을 실시하는 경우, 입출력 장치의 제어를 위한 메모리인 입출력 매핑 메모리 등에 액세스하여 입출력 장치가 오동작하거나 입출력 관련 데이터를 파괴 및 삭제하는 경우가 발생하는 등의 문제점을 해소하고 프로세서의 성능 향상을 실현함으로써, 하드웨어의 추가에 따른 추가비용 없이도 향상된 성능의 프로세서를 제공하는 것을 목적으로 한다.
상기의 목적을 이루고 종래기술의 문제점을 해결하기 위하여 본 발명의 일측에 따른 프로세서의 추론적 로드 명령 실행 방법은, 프로세서의 추론적 로드 명령 실행 방법에 있어서, 분기 명령을 실행하는 단계, 로드 명령을 수신하는 단계, 상기 로드 명령이 물리적 메모리 영역과 연관된 명령인가의 여부를 판단하는 단계 및 상기 판단 결과 물리적 메모리 영역과 연관된 경우, 상기 연산 명령의 실행 중에 지연이 발생하는 동안 상기 로드 명령을 실행하는 단계를 포함한다.
본 발명의 일실시예에 따른 프로세서는, 분기 명령 및 로드 명령을 실행하는 프로세서 코어, 상기 프로세서를 입출력 장치에 매핑시키는 입출력 매핑 메모리 및 물리적 메모리를 포함하고, 상기 프로세서 코어는 로드 명령을 수신하여, 상기 로드 명령이 물리적 메모리 영역과 연관된 로드 명령인가의 여부를 판단하고, 상기 물리적 메모리 영역의 로드 명령인 경우, 상기 분기 명령의 실행 중에 지연이 발생하는 동안 상기 로드 명령을 실행한다.
본 발명의 일실시예에 따른 프로세서 코어는 로드 명령을 수신하는 로드 명령 수신부, 상기 로드 명령이 물리적 메모리 영역과 연관된 로드 명령인가의 여부를 판단하는 메모리 영역 판단부 및 상기 판단 결과 물리적 메모리 영역의 명령인 경우, 분기 명령의 실행 중에 지연이 발생하는 동안, 상기 로드 명령을 실행하는 로드 명령 실행부를 포함한다.
이하 첨부된 도면들 및 첨부된 도면들에 기재된 내용들을 참조하여 본 발명의 바람직한 실시예를 상세하게 설명하지만, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 일례에 따른 프로세서의 추론적 로드 명령 실행 방법을 도시한 순서도이다.
먼저, 프로세서가 분기 명령을 실행한다(S100). 본 발명에 있어서 분기 명령은 추론적 로드 명령과 연관된 명령어들(instructions)로서, 이들 연산 명령의 실행을 위해서는 지연(latency) 시간이 필요하다. 즉, 이들 지연 시간 동안 로드 명령을 추론적으로 실행함으로써, 일련의 연산 명령에 대한 프로세서의 전체 동작 시간을 단축킬 수 있다.
상기 분기 명령의 실행 중에 지연(latency)이 발생(S110)하면, 로드 명령(load instruction)을 수신(fetch)한다(S120). 본 발명에 따른, 로드 명령은 메모리의 특정 번지에 저장되어 있는 값을 읽어오는 명령을 의미하는 것으로, 이와 유사하게 메모리를 액세스하여 소정의 데이터를 독출하는 일련의 명령어들을 모두 포함하는 것으로 해석될 수 있다.
이와 같이 수신한 로드 명령을 디코딩(decode)하여, 수신한 로드 명령이 물리적 메모리 영역과 연관되어 있는 명령인가를 판단한다(S130). 특히, 본 발명에 따른 로드 명령은 물리적 메모리 영역으로 액세스(access)하는가의 여부를 나타내는 식별자(marking)를 포함하고 있다. 따라서, 본 발명의 컴퓨팅 장치의 프로세서 코어(Processor Core)는 로드 명령에 첨부되어 있는 식별자를 이용하여 물리적 메모리 영역에 연관되어 있는 명령인가의 여부를 판단할 수 있다.
본 발명에 따른 물리적 메모리(physical memory) 영역이라 함은, 가상 메모리(virtual memory)가 아닌 영역으로서, 실제의 값을 쓰거나 읽는 경우에 다른 부수적인 효과가 발생하지 않는 실제 메모리 영역을 말한다. 입출력 매핑 메모리(I/O mapped)는 외부 장치에 접근하기 위한 영역이므로 물리적 메모리 영역에 포함되지 않는다.
일반적으로, 메모리 계층 구조는 가장 상위 계층으로서 프로세서 내에 포함되어 코어에 가장 가까우며 가장 빠른 속도를 갖는 제1 계층 메모리 영역, 프로세서와 제3 계층 메모리 사이의 처리 속도의 차이를 줄이기 위해서 사용되는 캐쉬 메모리(cache memory)에 해당하는 제2 계층 메모리 영역, 프로세서에서 실행될 프로그램 및 데이터가 저장되는 공간으로 메인 메모리(main memory)에 해당하는 제3 계층 메모리 영역 및 HDD(hard disk drive)및 자기 디스크 등과 같은 보조 기억 장치에 해당하는 제4 계층 메모리 영역 등이 있는데, 물리적 메모리 영역에 해당하는 메모리가 가장 빠르게 데이터를 제공할 수 있으며 제4 계층 메모리 영역에 해당하는 메모리의 데이터 제공 속도가 가장 느리다.
본 발명의 실시예에서는 상기한 메모리 계층 구조 하에서, 제1 계층 메모리 영역에 해당하는 물리적 메모리에 액세스 하는 로드 명령인가의 여부를 판단한다.
본 발명의 프로세서 코어(processor core)는 로드 명령이 물리적 메모리 영역에 해당하는 명령인가의 여부를 판단하여, 입출력 장치에 액세스 가능한 입출력 매핑 메모리(I/O mapped memory)영역이 아닌, 물리적 메모리 영역에만 해당하는 로드 명령만을 실행한다. 따라서, 물리적 메모리 영역이 아닌 입출력 매핑 메모리 영역에 액세스하는 것을 미리 차단하여, 불필요한 오류가 발생하는 것을 예방할 수 있다.
로드 명령이 물리적 메모리 영역과 연관되어 있지 않은 경우에는, 소정의 값을 리턴하여(S150), 진행 중이던 연산 명령이 정상적으로 실행될 수 있도록 한다.
또한, 본 발명에 따른 프로세서의 연산 방법은, 로드 명령이 물리적 메모리 영역과 연관된 명령인 경우에도, 추론적 방법에 의한 실행의 적용 시에 프로세서의 성능 향상을 기대할 수 있는가의 여부를 판단하는 과정을 더 포함할 수 있다(S140). 따라서, 프로세서의 성능 향상과 무관한 로드 명령일 경우에는 추론적(speculative) 방법에 의한 실행을 적용하지 아니함으로써, 불필요하게 리소스가 사용되거나 불필요한 전력이 소모되는 등의 문제점을 해결할 수 있다.
이와 같이, 수신한 로드 명령이 물리적 메모리 영역과 연관되는 명령이며 실행 시에 프로세서의 성능 향상이 가능한 명령인 경우에는, 추론적 방법에 의한 실행, 즉 로드 명령을 실행한다(S160).
즉, 분기 명령(branch instruction)의 실행 중에 명령의 실행을 위한 지연이 발생하는 경우에, 로드 명령을 수신하고 로드 명령에 물리적 메모리 영역에 해당하는 로드 명령을 나타내는 식별자를 이용하여, 물리적 메모리 영역에 해당하는 로드 명령인가의 여부를 판단할 수 있다. 따라서, 로드 명령이 물리적 메모리 영역에 해당하는 경우에는, 추론적 방법에 의한 로드 명령을 실행하여 분기 명령 중에 발 생하는 지연 시간 동안 미리 실행하는 것이 가능하다.
또한, 로드 명령이 물리적 메모리 영역에 해당하지 않는 것으로 판단한 경우에는, 특정한 값을 리턴하고 추론적 방법의 절차에 의한 명령을 실행하지 않으므로, 불필요하게 입출력 매핑 메모리에 영역에 접근하여 입출력 관련 장치의 데이터에 접근하는 등의 예외(exception) 상황을 발생시키지 않는다.
따라서, 분기 명령 중에 발생하는 지연 시간 동안 미리 추론적 방법에 의한 로드 명령을 실행하여 프로세서 연산 방법의 효율을 극대화 할 수 있다. 특히, 본 발명에 따른 프로세서의 연산 방법은 소프트웨어적인 구성만으로 추론적 방법에 의한 실행이 이루어지므로, 하드웨어적인 추가에 의한 비용이 발생하지 않는다.
또한, 본 발명에 따른 프로세서의 연산 방법은, 도 1에 도시된 프로세서의 연산 방법을 실행하는 프로그램을 기록한 컴퓨터 판독가능 기록 매체를 포함한다.
본 발명에 따른 프로세서의 연산 방법은 다양한 컴퓨터 수단을 통하여 실행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램 (RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 실행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 실행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
도 2는 본 발명에 따른 프로세서의 추론적 로드 명령 실행에 대한 명령 코드의 순차적 흐름을 도시한 것이다. 도 2에서는 레지스터 값의 비교 결과에 따라서 분기를 실행할 때 발생하는 지연의 시간 동안, 물리적 메모리 영역에 해당하는 메모리 값을 로드하는 실시예를 도시하고 있다.
단계(210)에서 제2 레지스터(r2)와 제3 레지스터(r3)의 값을 더하여 제1 레지스터(r1)에 저장하고, 단계(220)에서 제1 레지스터(r1)의 값을 하나 증가시켜서 제4 레지스터(r4)에 저장하며, 단계(230)에서는 "beq" 명령에 의하여 제4 레지스터(r4)를 소정의 값인 3과 비교하여 특정 위치 "L"로 분기(branch)게 되는데 이때, "beq" 명령에 의해 분기하여 명령을 실행하기 까지는 한 개의 단계에 해당하는 지연이 발생한다.
이때, 종래의 기술을 이용한 분기 명령 시의 추론적 방법에 의한 실행 방법은, 한 개의 단계에 해당하는 지연 기간에 어떠한 명령도 실행하지 않았다. 또한 분기 명령 시에 추론적 방법에 의하여 로드 명령을 실행하는 경우에는, 로드 명령의 실행 중에 예외가 미리 발생하는가의 여부를 판단하여 필요한 정보를 저장해 놓 고 명령을 실행하였으므로 하드웨어의 추가가 필요하였다.
그러나, 본 발명에서는 로드 명령에 추론적 방법에 의한 실행의 판단을 위한 식별자(marking)가 포함되어 있어서 소프트웨어에 의해 식별자를 판단하여 추가적인 비용 없이도 프로세서의 효율성을 향상 시킬 수 있다.
즉, 도 2의 단계(240)에서와 같이, 제4 레지스터(r4)에 해당하는 메모리 값을 읽어오는 로드 명령에 "L1"이라는 식별자를 추가하여 물리적 메모리 영역에 해당하는 로드 명령임을 표시한다. 따라서, 이 식별자를 통하여 물리적 메모리 영역에 해당하는 로드 명령인가의 여부를 판별하여, 물리적 메모리 영역에 해당하는 로드 명령인 경우에만, 분기 명령의 지연 기간 동안 제4 레지스터(r4)에 해당하는 메모리 값을 제5 레지스터(r5)에 전달하는 로드 명령을 실행한다.
결국, 제4 레지스터(r4)가 물리적 메모리 영역에 해당하는 경우에만 로드 명령을 실행하므로, 입출력 매핑 메모리와 같은 물리적 메모리 영역에 해당하지 않는 경우에는 로드 명령을 실행하지 않으므로 페이지 폴트(page fault)가 발생하지 않는다. 다시 말해, 로드 명령에 "L1"이라는 식별자가 포함되어 있지 않은 경우에는, 로드 명령을 실행하지 않음으로써 페이지 폴트와 같은 예외 상황이 발생하는 것을 차단할 수 있다.
이후에, 로드 명령이 종료되면 연산 순서에 의해 단계(250)에서의 연산, 즉 제5 레지스터(r5)의 값을 하나 증가시켜서 제6 레지스터(r6)에 저장하는 연산을 실행할 수 있다.
도 3은 본 발명의 일례에 따른 프로세서의 구성도이다. 도 3에 도시된 바와 같이, 본 발명에 따른 프로세서는 프로세서 코어(processor core: 300), 물리적 메모리(310) 및 입출력 매핑 메모리(320, 321)를 포함한다.
입출력 매핑 메모리(320, 321)는 제1 입출력 매핑 메모리(320) 및 제2 입출력 매핑 메모리(321) 등의 복수 개로 구성될 수 있으며, 프로세서 코어(300)가 입출력 장치(I/O device)의 제어를 위하여 입출력 장치에 대응되어 액세스 할 수 있는 영역의 메모리이다. 따라서, 입출력 매핑 메모리(320, 321)는 프로세서 코어(300)가 입출력 장치의 제어를 위하여 액세스한다.
그러나, 프로세서 코어(300)가 추론적 방법을 통하여 로드 명령을 실행하는 경우, 상기 입출력 매핑 메모리(320, 321)에 액세스하게 되는 경우에는 불필요하게 예외 상황이 발생하여 페이지 폴트, 입출력 장치의 오동작 발생, 심각한 경우에는 입출력 관련 데이터를 파괴 또는 삭제하는 등의 경우가 발생할 수 있다.
따라서, 본 발명에서는 프로세서 코어(300)가 분기 명령의 실행 중에, 입출력 매핑 메모리(320, 321)에 액세스 하는 것을 사전에 차단함으로써, 상기와 같은 예외 상황이 발생하는 것을 방지할 수 있다.
물리적 메모리(310)는 프로세서 내에 포함되며, 메모리 계층 구조 상에서 가장 상위 계층인 제1 계층 메모리 영역에 해당할 수 있다. 제1 계층 메모리 영역에 속하는 물리적 메모리(310)는 프로세서 코어(300)에서 가장 가깝고 가장 빠르게 액세스 할 수 있는 데이터 메모리이다.
프로세서 코어(300)는 프로세서에서 실제적인 연산이 실행되는 장치를 말하며, 메모리로부터 처리해야 할 명령을 가져와 해석하며, 해석한 명령을 실행하고 실행한 결과를 반영하는 등의 동작을 행한다.
본 발명의 프로세서 코어(300)는 로드 명령을 수신하여, 수신한 로드 명령이 물리적 메모리(310)와 연관된 명령인가의 여부를 판단한다. 더 상세하게, 프로세서 코어(300)는 로드 명령이 물리적 메모리(310)로 액세스하도록 하는 명령인가의 여부를 판단할 수 있다.
상기 로드 명령이 물리적 메모리(310)에 연관된 명령인가의 여부는, 로드 명령에 첨부되어 있는 식별자를 이용하여 판단할 수 있으므로, 프로세서 코어(300)는 로드 명령에 물리적 메모리(310) 영역으로 액세스 하는가의 여부를 나타내는 식별자가 포함되어 있는가의 여부를 판단하여, 로드 명령에 식별자가 포함되어 있는 경우, 물리적 메모리(310)로 액세스하는 로드 명령인 것으로 판단하여 로드 명령을 실행할 수 있다.
프로세서 코어(300)는 로드 명령에 물리적 메모리(310)에 연관된 명령임을 나타내는 식별자가 포함되어 있지 않은 경우에는, 로드 명령의 실행을 대신하여 소정의 값을 리턴하여, 지연이 발생한 연산 명령이 정상적으로 실행될 수 있도록 한다.
또한, 프로세서 코어(300)는 추론적 방법 의한 실행의 적용 시에 성능 향상을 기대할 수 있는가의 여부를 판단하여, 성능 향상이 가능하지 않은 추론적 방법에 의한 실행이 이루어져 불필요하게 리소스가 사용되거나 불필요한 전력이 소모되는 등의 문제점을 해결할 수 있다.
도 4는 본 발명의 일례에 따른 프로세서 코어의 구성도이다. 도 4에 도시된 바와 같이, 본 발명에 따른 프로세서 코어(400)는 로드 명령 수신부(410), 메모리 영역 판단부(420) 및 로드 명령 실행부(430)를 포함한다.
로드 명령 수신부(410)는 실행하여야 할 로드 명령을 메모리로부터 가져오며, 가져온 로드 명령을 메모리 영역 판단부(420)에 제공한다.
메모리 영역 판단부(420)는 로드 명령이 물리적 메모리 영역과 연관된 명령인가의 여부를 판단한다. 메모리 영역 판단부(420)는 로드 명령에 물리적 메모리(310) 영역으로 액세스 하는가의 여부를 나타내는 식별자가 포함되어 있는가의 여부를 판단하며, 로드 명령에 식별자가 포함되어 있는 경우에 물리적 메모리로 액세스하는 로드 명령인 것으로 판단한다.
또한, 메모리 영역 판단부(420)는 로드 명령이 물리적 메모리에 액세스 하는 로드 명령이 아닌 것을 판단한 경우에는, 로드 명령을 실행하는 대신에 소정의 값을 리턴하여, 로드 명령의 실행 전에 지연의 기간에 있던 연산 명령이 정상적으로 실행 될 수 있도록 한다.
한편, 메모리 영역 판단부(420)는 로드 명령을 실행 하였을 때, 프로세스의 성능 향상이 가능한가의 여부 또한 판단할 수 있으므로 불필요하게 리소스 및 전력이 소모되는 것을 사전에 차단할 수 있다.
로드 명령 실행부(430)는 메모리 영역 판단부(420)에서 로드 명령이 물리적 메모리에 액세스 하는 것을 판단하였을 경우에 로드 명령을 실행한다.
따라서, 분기 명령의 실행 중에 명령의 실행을 위한 지연이 발생하는 경우에, 로드 명령을 수신하여 로드 명령에 물리적 메모리 영역에 해당하는 로드 명령 을 나타내는 식별자를 이용하여, 물리적 메모리 영역에 해당하는 로드 명령인가의 여부를 판단할 수 있으므로, 로드 명령이 물리적 메모리 영역에 해당하는 경우에는, 추론적 방법에 의한 로드 명령을 실행하여 분기 명령 중에 발생하는 지연 시간 동안 미리 실행하는 것이 가능하다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
본 발명에 따르면, 소프트웨어 적인 방법에 의하여 분기 명령 시에 추론적 방법에 의한 실행이 가능하도록 하여, 분기 명령 시에 추론적 방법에 의한 실행을 실시하는 경우, 입출력 장치의 제어를 위한 메모리인 입출력 매핑 메모리 등에 액세스하여 입출력 장치가 오동작하거나 입출력 관련 데이터를 파괴 및 삭제하는 경우가 발생하는 등의 문제점을 해소하고 프로세서의 성능 향상을 실현함으로써, 하드웨어의 추가에 따른 추가비용 없이도 향상된 성능의 프로세서를 제공할 수 있다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 이는 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 따라서, 본 발명 사상은 아래에 기재된 특허 청구 범위에 의해서만 파악되어야 하고, 이의 균등 또는 등가적 변형 모두는 본 발명 사상의 범주에 속한다고 할 것이다.
Claims (14)
- 프로세서의 추론적 로드 명령 실행 방법에 있어서,분기 명령을 실행하는 단계;로드 명령을 수신하는 단계;상기 로드 명령이 물리적 메모리 영역과 연관된 명령인가의 여부를 판단하는 단계; 및상기 판단 결과 물리적 메모리 영역과 연관된 경우, 상기 연산 명령의 실행 중에 지연이 발생하는 동안 상기 로드 명령을 실행하는 단계를 포함하는 것을 특징으로 하는 프로세서의 추론적 로드 명령 실행 방법.
- 제1 항에 있어서,상기 물리적 메모리 영역과 연관된 명령인가의 여부를 판단하는 단계는, 상기 로드 명령이 물리적 메모리 영역으로 액세스하는가의 여부를 나타내는 식별자를 포함하고 있는지 여부를 판단하는 것을 특징으로 하는 프로세서의 연산 방법.
- 제1 항에 있어서,상기 판단 결과, 물리적 메모리 영역과 연관된 명령이 아닌 경우, 상기 로드 명령의 실행을 대신하여 소정의 값을 리턴하는 것을 특징으로 하는 프로세서의 연산 방법.
- 제1 항에 있어서,상기 물리적 메모리 영역과 연관된 명령인가의 여부를 판단하는 단계는, 상기 로드 명령이 프로세스의 성능 향상과 연관되어 있는지의 여부를 판단하는 단계를 더 포함하는 것을 특징으로 하는 프로세서의 연산 방법.
- 제4 항에 있어서,상기 성능 향상은 리소스 사용 및 소비 전력 중에서 적어도 어느 하나의 소모를 감소시키는 것을 특징으로 하는 프로세서의 연산 방법.
- 제1 항 내지 제5 항의 방법을 실행하는 프로그램을 기록한 컴퓨터 판독가능 기록 매체.
- 분기 명령 및 로드 명령을 실행하는 프로세서 코어;상기 프로세서를 입출력 장치에 매핑시키는 입출력 매핑 메모리; 및물리적 메모리를 포함하고,상기 프로세서 코어는 상기 로드 명령을 수신하여, 상기 로드 명령이 상기 물리적 메모리 영역과 연관된 로드 명령인가의 여부를 판단하고, 상기 물리적 메모리 영역의 로드 명령인 경우, 상기 분기 명령의 실행 중에 지연이 발생하는 동안 상기 로드 명령을 실행하는 것을 특징으로 하는 프로세서.
- 제7 항에 있어서,상기 로드 명령은 상기 물리적 메모리 영역으로 액세스 하는가의 여부를 나타내는 식별자가 포함되어 있는 것을 특징으로 하는 프로세서.
- 제7 항에 있어서,상기 프로세서 코어는, 물리적 메모리 영역과 연관된 로드 명령이 아닌 경우, 상기 로드 명령의 실행을 대신하여 소정의 값을 리턴하는 것을 특징으로 하는 프로세서.
- 제7항에 있어서,상기 프로세서 코어는 상기 로드 명령이 상기 프로세서의 성능 향상과 연관되어 있는지의 여부를 더 판단하는 것을 특징으로 하는 프로세서.
- 분기 명령 및 로드 명령을 수신하는 명령 수신부;상기 로드 명령이 물리적 메모리 영역과 연관된 로드 명령인가의 여부를 판단하는 메모리 영역 판단부; 및상기 판단 결과 물리적 메모리 영역의 명령인 경우, 상기 분기 명령의 실행 중에 지연이 발생하는 동안, 상기 로드 명령을 실행하는 명령 실행부를 포함하는 것을 특징으로 하는 프로세서 코어.
- 제11 항에 있어서,상기 로드 명령은 상기 물리적 메모리 영역으로 액세스 하는가의 여부를 나타내는 식별자가 포함되어 있는 것을 특징으로 하는 프로세서 코어.
- 제11 항에 있어서,상기 메모리 영역 판단부는, 물리적 메모리 영역과 연관된 로드 명령이 아닌 경우, 상기 로드 명령의 실행을 대신하여 소정의 값을 리턴하는 것을 특징으로 하는 프로세서 코어.
- 제12 항에 있어서,상기 메모리 영역 판단부는 상기 로드 명령이 프로세서의 성능 향상과 연관되어 있는지의 여부를 판단하는 것을 특징으로 하는 프로세서 코어.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020070017777A KR100867269B1 (ko) | 2007-02-22 | 2007-02-22 | 프로세서의 추론적 로드 명령 실행 방법 및 상기 방법을채용한 프로세서 |
EP07114222A EP1962184A1 (en) | 2007-02-22 | 2007-08-13 | Processor and method of performing speculative load operations of the processor |
US11/838,488 US8443174B2 (en) | 2007-02-22 | 2007-08-14 | Processor and method of performing speculative load operations of the processor |
JP2007212681A JP2008204429A (ja) | 2007-02-22 | 2007-08-17 | プロセッサがロード命令を投機的に実行する方法、およびその方法を採用したプロセッサ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020070017777A KR100867269B1 (ko) | 2007-02-22 | 2007-02-22 | 프로세서의 추론적 로드 명령 실행 방법 및 상기 방법을채용한 프로세서 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20080078133A true KR20080078133A (ko) | 2008-08-27 |
KR100867269B1 KR100867269B1 (ko) | 2008-11-06 |
Family
ID=38727225
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020070017777A KR100867269B1 (ko) | 2007-02-22 | 2007-02-22 | 프로세서의 추론적 로드 명령 실행 방법 및 상기 방법을채용한 프로세서 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8443174B2 (ko) |
EP (1) | EP1962184A1 (ko) |
JP (1) | JP2008204429A (ko) |
KR (1) | KR100867269B1 (ko) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI559224B (zh) * | 2014-10-23 | 2016-11-21 | 上海兆芯集成電路有限公司 | 處理器與透過處理器執行的方法 |
US9942631B2 (en) | 2015-09-25 | 2018-04-10 | Intel Corporation | Out-of-band platform tuning and configuration |
KR102450555B1 (ko) | 2015-11-09 | 2022-10-05 | 삼성전자주식회사 | 스토리지 장치 및 그것의 동작 방법 |
Family Cites Families (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01300352A (ja) * | 1988-05-30 | 1989-12-04 | Fujitsu Ltd | ダンプ領域指示制御方式 |
US5305446A (en) * | 1990-09-28 | 1994-04-19 | Texas Instruments Incorporated | Processing devices with improved addressing capabilities, systems and methods |
JP3102594B2 (ja) * | 1991-02-19 | 2000-10-23 | 松下電器産業株式会社 | キャッシュメモリ装置 |
US5875464A (en) * | 1991-12-10 | 1999-02-23 | International Business Machines Corporation | Computer system with private and shared partitions in cache |
DE69327981T2 (de) * | 1993-01-21 | 2000-10-05 | Advanced Micro Devices, Inc. | Kombinierte Speicheranordnung mit einem Vorausholungspuffer und einem Cachespeicher und Verfahren zur Befehlenversorgung für eine Prozessoreinheit, das diese Anordnung benutzt. |
US5689679A (en) * | 1993-04-28 | 1997-11-18 | Digital Equipment Corporation | Memory system and method for selective multi-level caching using a cache level code |
US5710912A (en) * | 1993-05-06 | 1998-01-20 | Hewlett-Packard Co. | Method and apparatus for enabling a computer system to adjust for latency assumptions |
US5680565A (en) * | 1993-12-30 | 1997-10-21 | Intel Corporation | Method and apparatus for performing page table walks in a microprocessor capable of processing speculative instructions |
JPH08185320A (ja) * | 1994-12-28 | 1996-07-16 | Mitsubishi Electric Corp | 半導体集積回路 |
US5611063A (en) * | 1996-02-06 | 1997-03-11 | International Business Machines Corporation | Method for executing speculative load instructions in high-performance processors |
US5740419A (en) * | 1996-07-22 | 1998-04-14 | International Business Machines Corporation | Processor and method for speculatively executing an instruction loop |
US5926831A (en) | 1996-10-11 | 1999-07-20 | International Business Machines Corporation | Methods and apparatus for control of speculative memory accesses |
US5937183A (en) * | 1996-11-05 | 1999-08-10 | Nec Usa, Inc. | Enhanced binary decision diagram-based functional simulation |
US5864692A (en) * | 1996-12-16 | 1999-01-26 | Hewlett-Packard Company | Method and apparatus for protecting memory-mapped devices from side effects of speculative instructions |
US6321297B1 (en) * | 1998-01-05 | 2001-11-20 | Intel Corporation | Avoiding tag compares during writes in multi-level cache hierarchy |
US6101582A (en) * | 1998-02-17 | 2000-08-08 | International Business Machines Corporation | Dcbst with icbi mechanism |
US6542966B1 (en) * | 1998-07-16 | 2003-04-01 | Intel Corporation | Method and apparatus for managing temporal and non-temporal data in a single cache structure |
US6463579B1 (en) | 1999-02-17 | 2002-10-08 | Intel Corporation | System and method for generating recovery code |
US6338133B1 (en) * | 1999-03-12 | 2002-01-08 | International Business Machines Corporation | Measured, allocation of speculative branch instructions to processor execution units |
US6275929B1 (en) | 1999-05-26 | 2001-08-14 | Infineon Technologies Ag L. Gr. | Delay-slot control mechanism for microprocessors |
US6418516B1 (en) * | 1999-07-30 | 2002-07-09 | International Business Machines Corporation | Method and system for managing speculative requests in a multi-level memory hierarchy |
US6662360B1 (en) * | 1999-09-27 | 2003-12-09 | International Business Machines Corporation | Method and system for software control of hardware branch prediction mechanism in a data processor |
JP3730455B2 (ja) | 1999-10-01 | 2006-01-05 | 富士通株式会社 | 情報処理装置及び情報処理方法 |
US6446197B1 (en) * | 1999-10-01 | 2002-09-03 | Hitachi, Ltd. | Two modes for executing branch instructions of different lengths and use of branch control instruction and register set loaded with target instructions |
US6324643B1 (en) | 1999-10-01 | 2001-11-27 | Hitachi, Ltd. | Branch prediction and target instruction control for processor |
US6438664B1 (en) * | 1999-10-27 | 2002-08-20 | Advanced Micro Devices, Inc. | Microcode patch device and method for patching microcode using match registers and patch routines |
US6971000B1 (en) * | 2000-04-13 | 2005-11-29 | International Business Machines Corporation | Use of software hint for branch prediction in the absence of hint bit in the branch instruction |
GB2385951A (en) * | 2001-09-21 | 2003-09-03 | Sun Microsystems Inc | Data encryption and decryption |
US6789169B2 (en) * | 2001-10-04 | 2004-09-07 | Micron Technology, Inc. | Embedded DRAM cache memory and method having reduced latency |
US6918030B2 (en) | 2002-01-10 | 2005-07-12 | International Business Machines Corporation | Microprocessor for executing speculative load instructions with retry of speculative load instruction without calling any recovery procedures |
US6941449B2 (en) * | 2002-03-04 | 2005-09-06 | Hewlett-Packard Development Company, L.P. | Method and apparatus for performing critical tasks using speculative operations |
JP3769249B2 (ja) * | 2002-06-27 | 2006-04-19 | 富士通株式会社 | 命令処理装置および命令処理方法 |
EP1379047A1 (en) * | 2002-07-03 | 2004-01-07 | Agilent Technologies, Inc. - a Delaware corporation - | Method and device for interpreting of transport format combination indicators |
EP1471421A1 (en) * | 2003-04-24 | 2004-10-27 | STMicroelectronics Limited | Speculative load instruction control |
US8417913B2 (en) * | 2003-11-13 | 2013-04-09 | International Business Machines Corporation | Superpage coalescing which supports read/write access to a new virtual superpage mapping during copying of physical pages |
US7421567B2 (en) * | 2004-12-17 | 2008-09-02 | International Business Machines Corporation | Using a modified value GPR to enhance lookahead prefetch |
-
2007
- 2007-02-22 KR KR1020070017777A patent/KR100867269B1/ko not_active IP Right Cessation
- 2007-08-13 EP EP07114222A patent/EP1962184A1/en not_active Withdrawn
- 2007-08-14 US US11/838,488 patent/US8443174B2/en active Active
- 2007-08-17 JP JP2007212681A patent/JP2008204429A/ja not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
EP1962184A1 (en) | 2008-08-27 |
KR100867269B1 (ko) | 2008-11-06 |
JP2008204429A (ja) | 2008-09-04 |
US8443174B2 (en) | 2013-05-14 |
US20080209188A1 (en) | 2008-08-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102592376B1 (ko) | 명령 실행 동작을 제어하기 위한 장치 및 방법 | |
TWI726925B (zh) | 用於管理有界指標的裝置和方法 | |
KR102554799B1 (ko) | 분기 명령어의 유형에 기초한 사전 분기 예측의 선택적 수행 | |
US11579879B2 (en) | Processing pipeline with first and second processing modes having different performance or energy consumption characteristics | |
JP7128206B2 (ja) | 機能の使用を管理するための装置および方法 | |
KR102590180B1 (ko) | 자격 메타데이터를 관리하는 장치 및 방법 | |
KR102699710B1 (ko) | 데이터 처리장치, 데이터 처리방법 및 컴퓨터 프로그램 | |
JP2016536665A (ja) | 推論的ベクトル演算の実行を制御するためのデータ処理装置及び方法 | |
CN112384894A (zh) | 存储偶然的分支预测以减少错误预测恢复的时延 | |
KR20200010308A (ko) | 자격 도메인을 관리하는 장치 및 방법 | |
US11513962B2 (en) | Draining operation to cause store data to be written to persistent memory | |
JP7377807B2 (ja) | リンク付き分岐命令の分岐ターゲット・バリアント | |
KR100867269B1 (ko) | 프로세서의 추론적 로드 명령 실행 방법 및 상기 방법을채용한 프로세서 | |
KR102613643B1 (ko) | 예외 처리 | |
TWI801622B (zh) | 用於處理保護標籤損失的裝置、方法、電腦程式、與儲存媒體 | |
US20090217014A1 (en) | Processor, memory device, processing device, and method for processing instruction | |
US11003457B2 (en) | Power-saving mechanism for memory sub-system in pipelined processor | |
JPH08137748A (ja) | コピーバックキャッシュを有するコンピュータ及びコピーバックキャッシュ制御方法 | |
JP2006331415A (ja) | データプロセッサ、データ処理方法 | |
US10198360B2 (en) | Systems and methods storing a page fault virtual address to prevent unnecessary page table walks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
J201 | Request for trial against refusal decision | ||
AMND | Amendment | ||
B701 | Decision to grant | ||
GRNT | Written decision to grant | ||
LAPS | Lapse due to unpaid annual fee |