학교공부/컴퓨터구조

[컴퓨터 구조] ISA

Dev_Camp 2023. 4. 24. 21:56

메모리에 instruction data가 올라오고 cpu는 매 클럭마다 instruction을 수행

 

 

컴파일러: high lever language를 다른 언어로 변환(컴파일)하고 그 결과를 목적 파일에 써 놓는 프로그램

인터프리터: 기계어로의 컴파일 과정을 거치지 않고 소스코드를 바로 실행하는 일종의 가상머신

어셈블러: 어셈블리 언어 프로그램을 기계어 프로그램으로 변환함

 

레지스터

-      레지스터는 메모리에서 가져온 데이터를 저장하는 CPU 내부 스토리지이다.

-      한 사이클에 읽거나 쓸 수 있다.

-      산술논리 연산자가 동작한다

-      MIPS ISA에는 32개의 32bit 레지스터가 존재한다. 각 레지스터는 32개의 플립플롭을 가지고 있다.

-      레지스터가 32개인 이유는 레지스터 수가 매우 많으면 단순히 멀리 이동해야 전자 신호가 오래 걸리기 때

문에 클럭 사이클 시간이 증가할 있기 때문이다.

 

 

 

메모리 계층

-      레지스터 > 캐시 > 메모리 > 하드디스크

-      레지스터는 프로그래머가 볼 수 있고 프로그래머가 유지 관리한다.

-      캐시는 프로그래머가 볼 수 없고 하드웨어에서 유지 관리한다.

 

 

 

Opcode: 명령어에서 실제로 어떤 동작을 하는지 나타내는 부분(ADD, LOAD, STORE)

Operand: 명령코드가 연산할 대상으로 명령어에 들어가는 인자 부분

 

 

 

ISA

-      Instruction set architecture으로 명령어 집합 구조이다.

-      software에서 hardware로 넘어가는 단계에서 중재자 역할을 해준다.

-      잘 정의된 하드웨어와 소프트웨어 인터페이스

-      하드웨어에서 지원하는 운영, 모드 및 스토리지 위치에 대한 기능적 정의 / 호출 및 엑세스 방법에 대한 정확한 설명을 담고 있음

-      ISA는 절대 모호해서는 안됨

 

 

 

좋은 ISA?

-      Programmability: 프로그램을 효과적으로 쉽게 표현할 수 있는지

-      Implement-ability: 고성능 구현을 디자인 하기 쉬운지

-      Compatibility: 이전 프로그램, 미래의 프로그램들과 호환될 수 있는지

 

 

 

Assembly language vs machine language

-      어셈블리어는 조금 더 사람의 언어에 가까움, 결과 값이 앞에 옴(a=b+c에서 a가 앞에 옴)

-      기계어는 사람이 이해하기 힘들과, 결과 값이 앞에 오지 않을 수 있음

 

 

 

MIPS

-      RISC 형식을 채택

-      레지스터를 줄여서 속도를 빠르게 함(MIPS 안에는 32개의 레지스터)

-      많이 쓰는 것일수록 빠르게 만듬

 

레지스터는 한정적인데 저장할 데이터 값들은 많으니 이를 해결하기 위해 스택에 데이터를 백업해둔다.

 

 

 

 

Harvard architecture

-      폰 노이만 구조의 단점을 보완하기 위해 고안

-      명령과 데이터를 메모리로부터 읽는 것을 동시에 할 수 있음

-      명령의 처리를 끝내자마자 다음 명령을 읽어 들일 수 있기 때문에 보다 더 빠름