1 |
1
비순차 실행 코어의 리오더 버퍼 관리 장치에 있어서, 각각 다수의 명령어를 포함하는 적어도 하나의 명령어 블록을 엔트리로서 저장하는 블록 히스토리 테이블; 상기 코어로 인가되는 명령어가 포함된 명령어 블록이 상기 블록 히스토리 테이블의 엔트리로 저장되어 있는지 여부를 판별하여, 명령어 블록이 저장되어 있지 않은 것으로 판별되면, 인가되는 다수의 명령어를 기지정된 기준에 따라 명령어 블록으로 구분하고, 구분된 명령어 블록의 정보를 상기 블록 히스토리 테이블로 전달하여 저장하며, 인가된 명령어에 대응하여 블록 히스토리 테이블에 저장된 명령어 블록에서 동일한 논리 레지스터에 대해 최종 쓰기 작업을 수행하는 최종 쓰기 명령어를 선택하여 상기 리오더 버퍼의 엔트리로 할당하는 블록 설정부; 및 상기 코어에서 상기 명령어 블록에 포함된 명령어가 정상적으로 실행되는지 여부를 모니터링하여, 모든 명령어가 정상적으로 실행된 것으로 판별되면, 상기 리오더 버퍼에 할당된 명령어 블록에 대응하는 모든 명령어에 대해 커밋 승인하는 블록 순서 큐를 포함하는 리오더 버퍼 관리 장치
|
2 |
2
제1 항에 있어서, 상기 블록 설정부는 상기 다수의 명령어 중 분기 명령어를 탐색하여 탐색된 분기 명령어를 기준으로 상기 다수의 명령어를 상기 명령어 블록으로 구분하는 리오더 버퍼 관리 장치
|
3 |
3
제2 항에 있어서, 상기 블록 설정부는 명령어 블록 내에 포함되는 다수의 명령어 중 첫번째 명령어에 대한 메모리 주소를 나타내는 블록 정의자와 다수의 명령어 중 최종 쓰기 작업을 수행하는 명령어의 위치 정보를 나타내는 최종 쓰기 지시자 및 분기 명령어의 위치 및 예측 분기 경로를 나타내는 분기 지시자를 상기 명령어 블록의 정보에 포함하여 상기 블록 히스토리 테이블의 엔트리에 저장하는 리오더 버퍼 관리 장치
|
4 |
4
제3 항에 있어서, 상기 블록 설정부는 상기 명령어 블록 내에서 동일한 논리 레지스터에 대해 최종 쓰기 작업을 수행하는 최종 쓰기 명령어와 함께 분기 명령어를 선택하여, 상기 리오더 버퍼의 엔트리로 할당하는 리오더 버퍼 관리 장치
|
5 |
5
제4 항에 있어서, 상기 블록 설정부는 상기 블록 순서 큐로부터 연속하는 동일한 명령어 블록들에 대해 기지정된 기준 커밋 횟수 이상 연속하여 커밋 승인되면, 서로 인접한 명령어 블록을 병합하고, 병합된 명령어 블록의 정보를 상기 블록 히스토리 테이블에 재저장하는 리오더 버퍼 관리 장치
|
6 |
6
제5 항에 있어서, 상기 블록 순서 큐는 상기 명령어 블록의 명령어 중 적어도 하나에서 오류가 발생된 것으로 판별되면, 리오더 버퍼에 할당된 명령어 블록에 대응하는 모든 명령어가 정상적으로 재실행될 때까지 할당된 상기 리오더 버퍼의 엔트리가 커밋되지 않도록 하는 리오더 버퍼 관리 장치
|
7 |
7
제6 항에 있어서, 상기 블록 순서 큐는 상기 명령어 블록의 명령어 중 적어도 하나에서 오류가 발생된 것으로 판별되면, 명령어 블록 내에서 오류가 발생된 명령어의 위치 정보를 블록 설정부로 전달하는 리오더 버퍼 관리 장치
|
8 |
8
제7 항에 있어서, 상기 블록 설정부는 상기 블록 순서 큐에서 전달된 오류가 발생된 명령어의 위치 정보에 기반하여 오류가 발생된 명령어 이전 분기 명령어를 기준으로 2개의 명령어 블록을 분할하고, 분할된 명령어 블록의 정보를 상기 블록 히스토리 테이블에 재저장하는 리오더 버퍼 관리 장치
|
9 |
9
제8 항에 있어서, 상기 블록 설정부는 2개의 명령어 블록을 분할 시에 오류가 발생된 명령어 이전 분기 명령어의 분기 경로를 변경하는 리오더 버퍼 관리 장치
|
10 |
10
비순차 실행 코어의 리오더 버퍼 관리 방법에 있어서, 상기 코어로 인가되는 명령어가 포함된 명령어 블록이 각각 다수의 명령어를 포함하는 적어도 하나의 명령어 블록을 엔트리로서 저장하는 블록 히스토리 테이블에 저장되어 있는지 판별하는 단계; 상기 명령어가 포함된 명령어 블록이 저장되어 있지 않은 것으로 판별되면, 인가되는 다수의 명령어를 기지정된 기준에 따라 명령어 블록으로 구분하는 단계; 구분된 명령어 블록의 정보를 상기 블록 히스토리 테이블에 저장하는 단계; 블록 히스토리 테이블에 저장된 명령어 블록 중 인가된 명령어에 대응하는 명령어 블록의 다수의 명령어 중 동일한 논리 레지스터에 대해 최종 쓰기 작업을 수행하는 최종 쓰기 명령어를 선택하여 상기 리오더 버퍼의 엔트리로 할당하는 단계; 및 상기 코어에서 상기 명령어 블록에 포함된 명령어가 정상적으로 실행되는지 여부를 모니터링하여, 모든 명령어가 정상적으로 실행된 것으로 판별되면, 상기 리오더 버퍼에 할당된 명령어 블록에 대응하는 모든 명령어에 대해 커밋 승인하는 단계를 포함하는 리오더 버퍼 관리 방법
|
11 |
11
제10 항에 있어서, 상기 구분하는 단계는 상기 다수의 명령어 중 분기 명령어를 탐색하여 탐색된 분기 명령어를 기준으로 상기 다수의 명령어를 상기 명령어 블록으로 구분하는 리오더 버퍼 관리 방법
|
12 |
12
제11 항에 있어서, 상기 명령어 블록의 정보는 명령어 블록 내에 포함되는 다수의 명령어 중 첫번째 명령어에 대한 메모리 주소를 나타내는 블록 정의자와 다수의 명령어 중 최종 쓰기 작업을 수행하는 명령어의 위치 정보를 나타내는 최종 쓰기 지시자 및 분기 명령어의 위치 및 예측 분기 경로를 나타내는 분기 지시자를 상기 명령어 블록의 정보에 포함하여 상기 블록 히스토리 테이블의 엔트리에 저장하는 리오더 버퍼 관리 방법
|
13 |
13
제12 항에 있어서, 상기 리오더 버퍼의 엔트리로 할당하는 단계는 상기 명령어 블록 내에서 동일한 논리 레지스터에 대해 최종 쓰기 작업을 수행하는 최종 쓰기 명령어와 함께 분기 명령어를 선택하여, 상기 리오더 버퍼의 엔트리로 할당하는 리오더 버퍼 관리 방법
|
14 |
14
제13 항에 있어서, 상기 리오더 버퍼 관리 방법은 연속하는 동일한 명령어 블록들에 대해 기지정된 기준 커밋 횟수 이상 연속하여 커밋 승인되면, 서로 인접한 명령어 블록을 병합하는 단계; 및 병합된 명령어 블록의 정보를 상기 블록 히스토리 테이블에 재저장하는 단계를 더 포함하는 리오더 버퍼 관리 방법
|
15 |
15
제13 항에 있어서, 상기 리오더 버퍼 관리 방법은 상기 명령어 블록의 명령어 중 적어도 하나에서 오류가 발생된 것으로 판별되면, 리오더 버퍼에 할당된 명령어 블록에 대응하는 모든 명령어가 정상적으로 재실행될 때까지 할당된 상기 리오더 버퍼의 엔트리가 커밋되지 않도록 하는 단계를 더 포함하는 리오더 버퍼 관리 방법
|
16 |
16
제14 항에 있어서, 상기 리오더 버퍼 관리 방법은 상기 명령어 블록의 명령어 중 적어도 하나에서 오류가 발생된 것으로 판별되면, 명령어 블록 내에서 오류가 발생된 명령어의 위치 정보를 획득하는 단계; 획득된 오류가 발생된 명령어의 위치 정보에 기반하여 오류가 발생된 명령어 이전 분기 명령어를 기준으로 2개의 명령어 블록을 분할하는 단계; 및 분할된 명령어 블록의 정보를 상기 블록 히스토리 테이블에 재저장하는 단계를 더 포함하는 리오더 버퍼 관리 방법
|
17 |
17
제16 항에 있어서, 상기 블록 히스토리 테이블에 재저장하는 단계는 2개의 명령어 블록을 분할 시에 오류가 발생된 명령어 이전 분기 명령어의 분기 경로를 변경하는 리오더 버퍼 관리 방법
|