최근에 성능의 한계를 드러내고 있는 수퍼스칼라 RISC를 대체할 새로운 프로세서 구조로서 SMT(Simultaneous Multi-Threading)이 활발히 연구되고 있다. SMT는 하나의 프로세서에 여러 개의 스레드가 하드웨어 자원을 동적으로 공유하며 동시에 수행되는 구조이다. 이러한 환경에서는 프로세서 안에 존재하는 여러 스레드로부터 명령어를 원활하게 공급하여 주는 것이 중요하다. SMT 프로세서는 기존의 프로세서에 비하여 사이클 당 실제 처리되는 명령어 수가 월등히 많기 때문에, 사이클 당 명령어 페치량과 페치된 명령어를 임시 저장하는 페치 큐의 엔트리수가 신중하게 결정되어야 한다. 또한 사이클마다 페치할 스레드와 각 스레드의 페치량을 결정하는 것이 성능에 큰 영향을 미친다. 따라서 본 논문에서는 이러한 요소들이 프로세서 전체의 성능에 미치는 영향을 분석하고 그 결과를 바탕으로 SMT 프로세서에 최적화된 명령어 페치 전략에 대하여 논한다.
최근에 성능의 한계를 드러내고 있는 수퍼스칼라 RISC를 대체할 새로운 프로세서 구조로서 SMT(Simultaneous Multi-Threading)이 활발히 연구되고 있다. SMT는 하나의 프로세서에 여러 개의 스레드가 하드웨어 자원을 동적으로 공유하며 동시에 수행되는 구조이다. 이러한 환경에서는 프로세서 안에 존재하는 여러 스레드로부터 명령어를 원활하게 공급하여 주는 것이 중요하다. SMT 프로세서는 기존의 프로세서에 비하여 사이클 당 실제 처리되는 명령어 수가 월등히 많기 때문에, 사이클 당 명령어 페치량과 페치된 명령어를 임시 저장하는 페치 큐의 엔트리수가 신중하게 결정되어야 한다. 또한 사이클마다 페치할 스레드와 각 스레드의 페치량을 결정하는 것이 성능에 큰 영향을 미친다. 따라서 본 논문에서는 이러한 요소들이 프로세서 전체의 성능에 미치는 영향을 분석하고 그 결과를 바탕으로 SMT 프로세서에 최적화된 명령어 페치 전략에 대하여 논한다.
Recently, conventional superscalar RISC processors arrive their performance limit, and many researches on the next-generation architecture are concentrated on SMT(Simultaneous Multi-Threading). In SMT processors, multiple threads are executed simultaneously and share hardware resources dynamically. ...
Recently, conventional superscalar RISC processors arrive their performance limit, and many researches on the next-generation architecture are concentrated on SMT(Simultaneous Multi-Threading). In SMT processors, multiple threads are executed simultaneously and share hardware resources dynamically. In this case, it is more important to supply instructions from multiple threads to processor core efficiently than ever. Because SMT architecture shows higher IPC(Instructions per cycle) than superscalar architecture, performance is influenced by fetch bandwidth and the size of fetch queue. Moreover, to use TLP(Thread Level Parallelism) efficiently, fetch thread selection algorithm and fetch bandwidth for each selected threads must be carefully designed. Thus, in this paper, the performance values influenced by these factors are analyzed. Based on the results, an optimal instruction fetch strategy for SMT processors is proposed.
Recently, conventional superscalar RISC processors arrive their performance limit, and many researches on the next-generation architecture are concentrated on SMT(Simultaneous Multi-Threading). In SMT processors, multiple threads are executed simultaneously and share hardware resources dynamically. In this case, it is more important to supply instructions from multiple threads to processor core efficiently than ever. Because SMT architecture shows higher IPC(Instructions per cycle) than superscalar architecture, performance is influenced by fetch bandwidth and the size of fetch queue. Moreover, to use TLP(Thread Level Parallelism) efficiently, fetch thread selection algorithm and fetch bandwidth for each selected threads must be carefully designed. Thus, in this paper, the performance values influenced by these factors are analyzed. Based on the results, an optimal instruction fetch strategy for SMT processors is proposed.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
따라서 본 논문에서는 SMT 프로세서에서 명령어 페치 유닛의 구조에 관한 기준을 제시하였다.
본 논문에 제안된 SMT ARM 프로세서의 구조는 위에서 설명된 ARM 명령어 셋의 단점을 보완하기 위한 단순한 명령어 이슈 및 종속성 예측 방식과 효율적인 하드웨어 자원 공유를 통한 비용절감을 염두에 두고 설계되었다.
SMT 구조는 하나의 프로세서 안에 존재하는 여러 개의 스레드에서 명령어를 선택하여 페치하여야 하고로 명령어페치(fetch) 단계의 자원 할당량과 페치 스레드 선택 알고리즘에 따라 프로세서의 성능이 영향을 받는다. 본 논문에서는 프로세서의 페치 자원과 페치알고리즘에 따른 성능의 변화를 분석하였다. 2장에서는 SMT 프로세서의 전체적인 구조에 대하여 논하고 3장에서는 명령어 페치 유닛의 구조, 페치 알고리즘들을, 4장에서는 연구 방법에 대하여 설명한다.
본 연구에서는 위의 파이프라인 구조에 따라 8개의 스레드를 지원하도록 SMT 프로세서 구조를 설계하였다. 사이클 당 이슈할 수 있는 최대 명령어 수는 8개이며, 명령어 캐쉬와 데이터 캐쉬는 32KB씩 가지도록 설계되었다.
본 연구에서는 페치 스레드 선택 알고리즘, 명령어 페치 큐의 엔트리 수 사이클 당 최대로 페치할수 있는 명령어 수(fetch bandwidth)가 프로세서 성능에 주는 영향을 분석하도록 한다. 성능 평가를 위한 기준으로는 사이클 당 페치된 명령어 수(Fetched Instruction Per Cycle)와 프로세서 전체의 성능을 나타내는 IPC(Issued Instructions Per Cycle)를 사용한다.
즉, 캐쉬 라인에 속하는 명령어들을 두 명령어씩 묶어서 그 안에 분기 명령이 있는가와 그분기 명령의 예측된 목적 주소가 어디인지에 관한 정보를 제공하는 것이다. 페치 단계에서 이 분기 예측 정보는 캐쉬의 명령어와 함께 읽혀지며, 페치를 수행할 때 페치된 명령어에 분기할 것으로 예측된 분기 명령이 존재하는 경우에는 그 명령까지만 페치 큐에 삽입하고 페치를 중단한다.
제안 방법
대하여 페치 가능성을 체크한다. 각 스레드의 선행 명령어가 익셉션을 발생시켰는지 혹은 페치 큐에 빈 공간이 없는지를 검사한다. 명령어 페치 큐는 grouping 2에 의하여 그룹 지어질 수 있기 때문에 특정 그룹에 속하는 스레드들에 대하여서는 명령어페치 큐에 빈 공간이 존재하지 않을 수 있다.
하지만, ARMe 시장 진입이 용이하고 현재 더 많은 응용 프로그램과 개발환경이 갖추어져 있으며, 가격경쟁력이 우수하다. 따라서 이러한 장점을 수용하여 SMT 구조로 변환의 어려움에도 불구하고, ARM명령어 셋을 본 연구의 SMT 프로세서 호환 명령어 셋으로 선택하였다.
본 논문에서 제안된 SMT ARM 구조는 cyclebased, execution driven 시뮬레이터로 구현된다. 시뮬레이터는 C 언어를 사용하여 작성되었다.
프로그램에 제공하도록 되어 있다. 본 시뮬레이터도 같은 응용 프로그램을 사용해야 하므로 ARMulator와 호환이 되는 SWI 명령을 처리할 수있도록 software interrupt routine-g- 작성하여 OS를 대신할 수 있도록 하였다
시뮬레이터는 SMT ARM 구조 전체를 모델링하도록 설계되었지만, 특별히 명령어 페치에 관련된 부분에 대하여는 여러가지 선택 사항을 두어, 이를 변화시키면서 전체 프로세서의 성능에 페치가 미치는 영향을 볼 수 있도록 하였다. 이 선택 사항은 명령어 페치 큐의 엔트리 수, 페치 스레드 선택 알고리즘, 명령어 캐쉬의 포트 수 등을 포함한다
ARM 프로세서용의 응용 프로그램의 실행 파일을얻기 위해서는 ARM Development Suit(ADS)''에 포함되어 있는 컴파일러를 사용하였다. 시뮬레이터에는 ADS에서 컴파일된 독립적인 응용 프로그램들을 여러 개 입력으로 가하여 다중 스레드에서의 SMT ARM 구조의 성능 평가를 실시하였다. 이 때시뮬레이터에서 수행된 프로그램이 올바른 결과를 출력하는가를 검증하기 위하여 동일한 프로그램을 ADS의 일부분인 ARMulator에서도 수행하여 비교대상으로 삼았다.
시뮬레이터에는 실제로 ARM 프로세서에서 수행될 수 있는 응용 프로그램을 입력으로 가한다. ARM 프로세서용의 응용 프로그램의 실행 파일을얻기 위해서는 ARM Development Suit(ADS)''에 포함되어 있는 컴파일러를 사용하였다.
변화를 나타낸다. 여기서 사이클 당 페치량은 5.1 절의 결과에 따라 8로 고정하였고, 스레드 선택알고리즘은 RR으로 하였다.
대상 데이터
가한다. ARM 프로세서용의 응용 프로그램의 실행 파일을얻기 위해서는 ARM Development Suit(ADS)''에 포함되어 있는 컴파일러를 사용하였다. 시뮬레이터에는 ADS에서 컴파일된 독립적인 응용 프로그램들을 여러 개 입력으로 가하여 다중 스레드에서의 SMT ARM 구조의 성능 평가를 실시하였다.
연구 초기 단계에는 ALPHA, MIPS, ARM의 세가지의 명령어 셋을 염두에 두고 선택하였다. ALPHA는 고성능 수퍼스칼라 RISC 프로세서로서 SMT 구조로 변환하기에 가장 유리한 구조이다.
시뮬레이터에는 ADS에서 컴파일된 독립적인 응용 프로그램들을 여러 개 입력으로 가하여 다중 스레드에서의 SMT ARM 구조의 성능 평가를 실시하였다. 이 때시뮬레이터에서 수행된 프로그램이 올바른 결과를 출력하는가를 검증하기 위하여 동일한 프로그램을 ADS의 일부분인 ARMulator에서도 수행하여 비교대상으로 삼았다.
이론/모형
이런 상황에서 out-of-order 방식으로 설계를 하면 하드웨어 복잡도가 증가하고 이로 인하여 프로세서 전체의 지연시간 또한 증가하므로 오히려 성능에 악영향을 미칠 수 있다. 따라서 본 논문에서 제안한 SMT ARM 구조는 간단한 in-order issue 및 completion 방식을 채택하였다. SMT 구조는 기본적으로
주는 영향을 분석하도록 한다. 성능 평가를 위한 기준으로는 사이클 당 페치된 명령어 수(Fetched Instruction Per Cycle)와 프로세서 전체의 성능을 나타내는 IPC(Issued Instructions Per Cycle)를 사용한다. 각 성능 값은 두 workload를 사용하여 나오는 결과의 평균치이다.
명령어 페치 큐에 넣는다. 이를 위해서 명령어캐쉬는 non-blocking 캐쉬를 사용하였다. 기존의 수퍼스칼라 구조는 일반적으로 일정 수행 사이클 동안 하나의 스레드만을 처리하므로 그 스레드에서 캐쉬 미스(Cache miss)가 발생하면 모든 명령어의 페치가 중단된다.
성능/효과
그러나 프로세서 성능의 척도인 IPC는 ICOUNT_ BHB와 ICOUNT_LB 알고리즘을 사용한 성능 평가에서 다른 경우와 비교하여 현저히 낮게 나타났다. 이들은 파이프라인 상에 존재하는 분기 명령의 수와 메모리 접근 명령의 수에 근거하여 페치 스레드를 선택하는 알고리즘이다.
위의 시뮬레이션 결과와 하드웨어적인 고찰을 종합하면 사이클 당 페치량은 프로세서의 최대 이슈명령어 수와 같도록 설정하는 것이 자원 효율과 성능 면에서 유리하다.
참고문헌 (7)
ARM, ARM Architecture Reference Manual, Part A CPU Architecture, 1996
Susan J. Eggers, Joel S. Emer, Henry M. Levy, Jack L. Lo, Rebecca L. Stamm, Dean M. Tullsen, 'SIMULTANEOUS MULTITHREADING: A Platform for Next-Generation Processors', September/October 1997 IEEE Micro, p.p. 12-19
D.M. Tullsen, S.J. Eggers, J.S. Emer, H.M. Levy, J.L. Lo, and R.L. Stannn, 'Exploiting Choice: Instruction Fetch and Issue on an Implementable Simultaneous Multithreading Processor,' Proc. 23rd Annual International Symposium on Computer Architecture, pp. 191-202, May 1996
H. Hirata, K. Kimura, S. Nagamme, Y. Mochizuki, A. Nishimura, Y. Nakase, and T. Nishizawa, 'An Elementary Processor Architecture with Simultaneous Instruction Issuing from Multiple Threads,' Proc. 19th Annual International Symposium on Computer Architecture, pp. 136-145, May 1992
Clearwater Networks, Inc. 'Introducing the CNP810 Farnily of Network Services Processors', http://www.clearwaternetworks.con/c1earwater_overview.pdf, June 2001
Mike Johnson, Superscalar Microprocessor Design, pp. 107-108, Prentice-Hall, Inc. 1991
ARM, ARM Developer Suit version 1.1, Compiler, Linker and Utilities Guide, 1999
※ AI-Helper는 부적절한 답변을 할 수 있습니다.