마이크로 스레드(멀티 코어)

마이크로 프로세서는 몇 달에 한 번씩 추가되는 코어의 주로하기 때문에,빠른 해지고있다,메모리 대기 시간 격차는 넓어지고있다. 메모리 대기 시간은 1980 년에 몇 사이클이었고 요즘 거의 1000 사이클에 도달하고 있습니다. 마이크로 프로세서에 충분한 코어가 있고 동시에 주 메모리에 요청을 보내지 않는 경우 메모리 대기 시간이 부분적으로 집계됩니다. 일부 코어는 다른 코어가 메모리 응답을 기다리는 동안 실행 중일 수 있습니다. 이 멀티 코어 프로세서에 대한 최선의 상황이 아니다. 고성능 컴퓨팅 전문가들은 항상 모든 코어를 바쁘게 유지하기 위해 노력하고 있습니다. 따라서 각 코어가 항상 바쁘게 유지되면 전체 마이크로 프로세서의 완전한 활용이 가능합니다. 소프트웨어 기반 스레드를 생성해도 한 가지 분명한 이유 때문에 문제가 해결되지 않습니다. 컨텍스트 스레드를 메인 메모리로 전환하는 것은 메모리 대기 시간과 비교할 때 훨씬 비싼 작업입니다. 예를 들어,셀 광대역 엔진 컨텍스트에서 코어의 스레드 중 하나를 전환하는 데 최상의 경우 2000 마이크로 초가 걸립니다. 이중 또는 다중 버퍼링과 같은 일부 소프트웨어 기술은 메모리 대기 시간 문제를 해결할 수 있습니다. 그러나 프로그램이 메모리에서 검색 할 다음 데이터 청크가 어디에 있는지 알고있는 일반 알고리즘에서 사용할 수 있습니다.이 경우 이전에 요청 데이터를 처리하는 동안 메모리에 요청을 보냅니다. 그러나 이 기술은 프로그램이 메모리에서 검색할 다음 데이터 청크를 모르는 경우 작동하지 않습니다. 즉,트리 스패닝 또는 무작위 목록 순위와 같은 조합 알고리즘에서는 작동하지 않습니다. 또한 멀티 버퍼링은 메모리 대기 시간이 일정하며 정적으로 숨길 수 있다고 가정합니다. 그러나 현실은 메모리 대기 시간이 응용 프로그램에서 다른 응용 프로그램으로 변경된다는 것을 보여줍니다. 이 같은 메모리 요청 공유 코어 상호 연결의 속도와 같은 마이크로 프로세서의 공유 리소스에 대한 전체 부하에 따라 달라집니다.

답글 남기기

이메일 주소는 공개되지 않습니다.

More: