컴퓨터 방식과 피연산자의 수
- 누산기 컴퓨터 ⇒ 1-주소 명령어
- 스택 컴퓨터 ⇒ 0-주소 명령어
- 메모리-메모리 컴퓨터 ⇒ 2-주소 혹은 3-주소 명령어
- 범용 레지스터 컴퓨터 ⇒ 2-주소 혹은 3-주소 명령어
각 컴퓨터의 폰노이만 트래픽 비교
- 가정
- 연산 부호: 8비트 (1바이트)
- 메모리 주소: 16비트 (2바이트)
- 데이터 크기: 32비트 (4바이트)
누산기 컴퓨터
- ~ 1960s
- 명시적으로 하나의 피연산자 사용
- 데이터 저장을 위한 누산기(accumulator) 레지스터 사용
- ex) lda a ← a라는 주소에 있는걸 load해라
- 명령어 길이 3바이트 ⇒ 매 인출 때마다 3바이트의 트래픽 생김
- 실행 트래픽(=데이터트래픽) 4바이트
- ⇒ lda a는 총 7바이트의 트래픽 사용
- ex) lda a ← a라는 주소에 있는걸 load해라
fetch traffic = 명령어 길이
excution traffic = 데이터 크기
cpu내부에서 스택에 있는걸 연산하고 다시 넣기 때문에 실행 트래픽 발생 x


스택 컴퓨터
- 1960~70s
- CPU 내부에서 데이터 저장을 위해 Stack 사용
- 최상위 1~2개 데이터를 피연산자로 사용→ 최근 연산한 데이터는 Stack의 최상위에 저장



메모리-메모리 컴퓨터
- 1970~80s
- CPU 내부에 기억장치가 없는 컴퓨터, 연산 레지스터가 없음
- 피연산자는 항상 메모리 주소만 사용
- 모든 데이터는 메모리에서 → CPU에서 계산 → 메모리로 전송
- 레지스터가 없어서 load store 명령 존재 x, 대신 move 명령 o
- 2-주소 명령어와 3-주소 명령어
- 데이터 2번 이동 = 4 + 4 ⇒ 8
- 데이터 3번 이동 = 4 + 4 + 4 ⇒ 12


범용 레지스터 컴퓨터
- 1970s~
- CPU 내부에 데이터 저장을 위한 범용 레지스터를 사용하는 컴퓨터
- 순서, 위치에 상관없이 임의 접근 가능
- 모든 레지스터의 접근 시간 동일
- 레지스터를 명시적 피연산자로 사용, 앞선 컴퓨터에서는 메모리주소를 피연산자로 사용
- 2-주소 명령어와 3-주소 명령어
- 적재-저장 명령어 컴퓨터(load-store machine)
- 적재, 저장 명령어 사용 시에만 메모리 접근 o 다른 명령어 사용 시에는 메모리에 접근 x(레지스터끼리만 연산)
- 실행트래픽(메모리트래픽) = 0(메모리에서 주소가 안 옴)


레지스터 사용과 트래픽의 관계
- 인출단계에 사용되는 명령어 트래픽, 실제 명령어를 실행할 때 쓰는 데이터 트래픽
- 메모리-메모리 → 범용 레지스터 ⇒ 데이터 트래픽이 현저하게 감소
- 누산기의 경우 피연산자를 생략해 명령어 길이를 줄임
- 반복적으로 사용되는 피연산자를 CPU 내부의 레지스터에 보관하여 데이터 이동 개수 줄임

Uploaded by N2T
댓글