동시 멀티스레딩: 두 판 사이의 차이

내용 삭제됨 내용 추가됨
23번째 줄:
== 기능 변화의 역사 ==
멀티스레딩 CPU가 1950년대 이후부터 나오는 동안 IBM은 1968년에 처음으로 동시 멀티스레딩을 연구하였다. SMT를 채용한 최초의 상용 마이크로프로세서는 [[알파 21464]] (EV8)였다. 이 마이크로프로세서는 <!--정확한 용어 표기 필요: 시작-->캘리포니아 딘 툴센(Dean Tullsen) 대학교, 샌디에이고, 수잔 에거스(Susan Eggers), 워싱턴 행크 레비 대학교(Hank Levy of the University of Washington)<!--정확한 용어 표기 필요: 끝-->와 협력하여 [[디지털 이큅먼트 코퍼레이션|DEC]]가 개발하였다. 이 마이크로프로세서는 [[휴렛 패커드|HP]]가 [[디지털 이큅먼트 코퍼레이션|DEC]]를 인수한 [[컴팩]]을 인수하기 직전에 알파 계열의 마이크로프로세서가 단종된 뒤로 출시된 적이 없다. 딘 툴센의 작품은 노스우드(Northwood)와 프레스캇(Prescott)과 같은 [[하이퍼스레딩]](HTT) 버전의 인텔 펜티엄 4 마이크로프로세서를 개발하는 데에도 사용되었다.
 
== 현대의 상용 기술로의 도입 ==
[[인텔]] [[펜티엄 4]]는 2002년에 3.06 GHz 모델을 기점으로 출시된 동시 멀티스레딩을 채용한 최초의 현대 데스크톱 프로세서였으며 그 뒤로도 그들의 수많은 프로세서에 도입되었다. 인텔은 이 기술을 [[하이퍼스레딩|하이퍼스레딩 기술]](HTT)로 불렀으며 두 개의 스레드가 기본인 SMT 엔진을 제공한다. 인텔은 SMT를 채용하지 않은 펜티엄 4와 동일한 기준에 비해 최대 30%의 성능 향상이 있다고 주장한다. 성능 향상은 응용 프로그램에 따라 매우 큰 차를 보이지만 어떠한 프로그램은 도리어 HTT가 켜져 있을 때 대역, 캐시, [[변환 색인 버퍼]]. [[재정렬 버퍼]] 엔트리와 같은 자원에 크게 집중한다면 속도가 느려지기도 한다. 이는 일반적으로 잘 작성되지 않은 데이터 접근 루틴에서 비롯하며 이 경우 멀티프로세서 시스템에서 높은 레이턴시의 캐시 간 트랜잭션 (캐시 트래싱-<small>cache trashing</small>)이 일어난다. 멀티프로세서, 멀티코어 설계가 만연하기 전에 작성한 프로그램들은 단일 CPU 시스템이 하나의 캐시에 스스로 늘 일관적이었기 때문에 일반적으로 캐시 접근을 최적화하지 못하였다. 멀티코어 시스템에서 각 CPU나 코어는 일반적으로 저만의 캐시를 갖추고 있으며 시스템 상의 다른 CPU/코어의 캐시와 상호 연결함으로써 [[캐시 일관성]]을 유지한다. 스레드 A가 메모리 위치 [00]에 접근하고 스레드 B가 메모리 위치 [01]에 접근한다면 특히 현대의 모든 프로세서 기준에서 캐시 라인이 2바이트를 넘어서는 곳에서 캐시 간 트랜잭션이 일어난다.
 
== 단점 ==