본문 바로가기

Library/Computer System

Amdahl's Law 이상적인 병렬 처리에서는, n-way 만큼 처리 능력을 향상시켰다고 할 때 n 배의 성능 향상 효과가 있어야 한다. 하지만, 이런 선형적인 성능 향상은 현실 세계에서는 절대로 불가능하다. 왜냐하면, 병렬 처리가 필요한 계산 문제에서, 여기에 참여하는 각 구성 요소들의 통신과 협조 비용이 존재하기 때문이다. 즉, 각 작업량이 모두 동일하지 않을 수도 있으며, 작업들 사이에서 의존성 관계가 생길 수 있기 때문에 이를 중재하지 않고서는 병렬화가 불가능하다. 이런 종류의 분석 결과를 단적으로 말해주는 것이 암달의 법칙(Amdahl's Law)이다. 암달의 법칙은 어떤 작업의 속도를 향상시킬 수 있는 정도는, 성능 향상이 적용되지 않는 부분에 의해 제한된다는 보여준다. 작업의 속도 향상 정도 S는, 하나의 프로세.. 더보기
파이프라인(Pipeline) 파이프라인이란 하나의 프로세스를 서로 다른 기능을 가진 여러 개의 서브 프로세스(subprocess)로 나누어 각 서브 프로세스가 동시에 서로 다른 데이터를 취급하도록 하는 기법이다. 각 세그먼트(segment)에서 수행된 연산 결과는 다음 세그먼트로 연속적으로 넘어가게 되어 데이터가 마지막 세그먼트를 통과하면 최종적인 연산 결과를 얻게 된다. 이런 식으로 하나의 진행에서 연산을 중복시키는 것은 각 세그먼트마다 레지스터를 두는 것으로 가능하다. 이 레지스터들은 각 세그먼트마다의 연산 결과를 보관함으로써 여러 개의 데이터에 대한 연산의 중간 결과를 보관하는 역할을 한다. 가장 간단한 파이프라인의 구조는 각 세그먼트마다 그에 해당하는 연산을 수행하는 조합 회로를 두며, 그 출력에 레지스터를 연결하는 것이다... 더보기
배열 프로세서(Array Processor) 배열 프로세서(array processor)는 대규모의 데이터 배열에 대한 계산을 수행하는 프로세서이다. 부가 배열 프로세서(attached array processor)는 범용 컴퓨터에 부착하는 추가 프로세서로, 특별한 수치 계산 작업에 대한 컴퓨터의 성능을 향상시키기 위해 사용된다. SIMD 배열 프로세서(SIMD array processor)는 단일 명령어 / 다중 데이터 구조를 가진 프로세서이며, 보통의 명령어에 대한 다중 기능 장치를 사용하여 벡터 명령어를 처리한다. 즉 두 형태 모두 벡터를 처리하는 배열 프로세서지만 내부적인 구조가 다르다. 부가 배열 프로세서는 기존의 호스트 컴퓨터에 대한 주변 장치로서 설계된 것으로, 복잡한 과학 응용에 대해 벡터 처리 능력을 제공하여 컴퓨터의 성능을 향상시.. 더보기
병렬 처리(Parallel Processing) 병렬 처리(parallel processing)는 컴퓨터 시스템의 계산 속도 향상을 목적으로 하여 동시 데이터 처리 기능을 제공하는 광범위한 개념의 기술을 의미한다. 예를 들어 ALU에서 어떤 명령어가 실행되고 있을 때 다음 명령어를 메모리에서 읽어오거나, ALU에서 어떤 명령어가 실행되고 있을 때 다음 명령어를 메모리에서 읽어오거나, ALU를 두 개 이상 두고서 동시에 두 개 이상의 명령어를 실행하는 시스템이 있다. 더 나아가 한 시스템에 병행적으로 동작하는 두 개 이상의 프로세서를 둘 수도 있다. 병렬 처리의 목적은 이와 같이 컴퓨터의 처리 속도를 향상시키고, 이와 함께 처리율(throughput)도 증가시키는 것이다. 병렬 처리를 구현하기 위해서는 추가의 하드웨어가 필요하고, 따라서 시스템의 비용이.. 더보기
Normalization 만약, 71.3125(+1000111.0101)를 표현하기 위해서는 먼저 부호(sign), 모든 비트, 그리고 소수점의 위치를 메모리에 저장해야 한다. 이것은 가능한 이야기임에도 불구하고, 이 방법은 수를 계산하는 것은 복잡하게 만든다. 표준화된 부동소수점(floating point) 표현 방법이 필요할텐데, 그 방법은 소수점 자리의 왼쪽에 1만 남기도록 소수점 자리를 이동하는, 표준화(normalization)이다. 어떤 수의 원래 값을 알기 위해서, 2^e를 곱해야 하며, e는 이동한 소수점 자리이다. 왼쪽으로 이동하는 것은 양수(positive)를 나타내며, 오른쪽으로 이동한 것은 음수(negative)를 나타낸다. 부호는, 원래 값의 부호에 따른다. Examples of normalization .. 더보기
Excess System 컴퓨터에서 양수(positive)와 음수(negative) 모두를 저장할 수 있는 다른 표현 방법으로, 익세스 시스템(Excess System)이 있다. 이 방법은, 십진수와 이진수를 변환이 간단하지만, 수의 계산 방법은 복잡하다. 지금은, 분수의 지수값을 저장하는데에만 사용한다. 익세스 변환에서, 매직 넘버라 불리는 양수값이 변환 과정에서 사용된다. 매직 넘버는 보통 2^(N - 1) 또는 2^(N-1) - 1이며, N은 할당된 비트이다. 예를 들어 N이 8이라면, 매직 넘버는 128 아니면 127이다. 첫 번째 경우, 이것을 익세스_128(Excess_128) 표현이라 부리고, 두 번째 경우를 익세스_127(Excess_127) 표현이라 부른다. 익세스 방식으로 수를 표현하려면, 다음의 과정을 따른다.. 더보기
Floating Point Representation 정수(integer) 부분과 분수(fraction) 부분을 포함하고 있는 부동소수점(floating poing number)을 표현하기 위해서, 수는 정수와 분수 두 부분으로 나누어져야 한다. 예를 들어, 부동소수점 14.234라는 수는 14라는 정수와 0.234라는 분수를 가진다. 부동소수점을 이진수로 변환하려면, 다음과 같은 절차를 따른다. 1. 정수 부분을 이진수로 변환한다. 2. 분수 부분을 이진수로 변환한다. 3. 10진수 소수점 자리를 두 부분 사이에 둔다. 분수를 이진수로 변환하기 위해서, 반복되는 곱셈 방법을 사용한다. 예를 들어, 0.125를 이진수로 바꾸기 위해서, 먼저 2를 곱한다. 결과는 0.250이며, 결과의 정수 부분이 추출되고, 이것이 가장 왼쪽에 위치한 이진 자리수가 된다. .. 더보기
Critical Section 경쟁 조건을 피하는 문제에서, 프로세스는 이따금 공유 메모리나 파일들에 접근해야만 하고, 경쟁을 유발하는 일을 하게 된다. 공유 메모리에 접근하는 프로그램 부분을 임계구역(critial region, 또는 critical section)이라 한다. 어떤 두 프로세스도 동시에 임계구역에 둘 수 없도록 한다면, 경쟁 상태를 피할 수 있다. 비록 이와 같은 요구 사항이 경쟁 조건을 피할 수 있어도, 병렬 프로세스들이 정확하게 협력하고, 효율적으로 공유 데이터를 사용하기 위한 충분 조건은 아니다. 좋은 해법을 얻기 위해서는 다음 4가지 조건이 필요하다. 1. 어떤 두 프로세스도 동시에 임계구역 안으로 들어갈 수 없다. 2. CPU의 속도나 수에 대한 어떤 가정도 없다. 3. 임계구역 밖에서 수행되는 어떤 프로세.. 더보기
Semaphore and Mutex 1965년에 E. W. Dijkstra는 wakeup 수를 카운트하기 위한 정수 변수, 즉 세마포어(Semaphore)라는 새로운 변수형을 제안하였다. 세마포어는 wakeup이 하나도 없는 0 값을 가질 수도 있고, 하나 이상이 보류되어 있는 양수값을 가질 수도 있다. Dijkstra는 sleep과 wakeup에 대응되는 두 개의 동작 down, up을 갖도록 제안하였다. down 동작은 해당 세마포어 변수가 0보다 큰가를 검사한다. 큰 값이면 1만큼 감소시키고 계속된다. 만약 0이면 그 프로세스는 바로 자게 된다. 변수를 검사하고, 변경하고, 잘 수 있게 하는 동작은 분리되지 않는 단위동작으로 일어난다. 이것은 세마포어 동작이 일단 시작되면 다른 어떤 프로세스도 이 동작이 완료되거나 블록되지 않는 한 .. 더보기