멀티 코어 구조에서 잠재적인 성능 향상은 응용 프로그램이 병렬자원을 얼마나 효율적으로 이용할 수 있느냐에 달려있다. 여기서 성능 향상이란 처리 속도의 향상을 의미한다.
Amdal의 법칙
Amdal의 법칙은 멀티코어시스템에서 수행되는 단일 응용 프로그램의 속도 향상을 구하는 공식이다.
f : 전체 코드 중 병렬화 비중
1 - f : 전체 코드 중 순차동작 비중
N : 코어의 개수
1 : 단일 처리기 상에서 프로그램 실행 시간
( 1 - f ) : 전체 코드 중 순차 코드 처리 시간
f/N : f의 병렬 코드를 N개의 코어로 나누어 처리한 시간
10%가 순차 동작하는 코드라면 f = 0.9이다. 8개의 처리기로 구성된 멀티코어 시스템이라면 속도 향상은 4.7이 나온다.
그렇다면 코어의 개수를 무한히 늘리면 속도도 무한히 증가할까?
그렇지 않다. 멀티프로세서들 간의 통신 및 작업 분배 같은 추가 작업이 증가하므로 오버헤드가 증가한다. 그래서 특정 개수에서 속도향상의 정점을 찍으면 속도향상은 감소한다. 이렇듯 성능향상에는 한계가 있다.
구스타프슨 법칙
구스타프슨 법칙은 암달의 법칙이 제시한 성능 향상의 한계를 극복한 법칙이다.
대규모의 반복적 작업을 한 대의 시스템에서 처리할 수 있는 양만큼 분할한 후 시스템 수를 늘려 처리하면 속도향상은 처리기의 개수에 비례하여 향상된다. 확장성의 법칙이라고도 부르며 데이터 센터를 이루는 클라우딩, 슈퍼 컴퓨터의 기본원리이다.
a : 순차처리비율
P : 처리기 개수
( 1 - a ) : 병렬 처리 비율
속도 향상 = a + P * ( 1 - a ) = P - a ( P - 1 )
P가 증가함에 따라 속도는 비례되어 향상된다.
참고자료
'CS > OS' 카테고리의 다른 글
[운영체제] 프로세스 간 관계 (0) | 2021.10.12 |
---|---|
[운영체제] 병행성 (0) | 2021.10.12 |
[운영체제] KLT( Kernel Level Thread ) VS ULT ( User Level Thread ) (0) | 2021.10.11 |
[운영체제] 쓰레드 ( Thread ) (0) | 2021.10.11 |
[운영체제] 프로세스 제어구조 (0) | 2021.10.11 |