하드웨어가 알아들을 수 있는 언어 : 명령어
명령어 집합 (instruction set)
기계어의 종류 : MIPS, ARMv7, Intel x86,ARMv8, 등
모든 컴이 같은 기본 원리 위에 구축된 하드웨어 기술로 만들어짐
하드웨어가 제공하는 기본적인 연산은 몇 가지 안 됨
컴 설계자는 하드웨어와 컴파일러 제작이 쉬우면서도 최소 비용에 최대 성능을 구현할 수 있는 언어를 찾아내고자 함
<하드웨어 연산>
MIPS 어셈블리 언어 (합)
add a, b, c
b와 c를 더하여 a에 넣으라는 뜻
MIPS 산술 연산은 항상 한 종류의 연산만 지시하며 항상 변수 3개를 가짐
설계 원칙 1 : 간단하게 하기 위해서는 규칙적인 것이 좋다
그래서 여러 변수의 합을 구할 때는 ( b,c,d,e를 a에 저장하기)
add a, b, c
add a, a, d
add a, a, e
이렇게 해야 함
한 줄에 명령어 하나씩만 들어감
sub a,b,c
뺄셈 명령어
<피연산자>
피연산자는 하드웨어로 직접 구현된 특수 위치 몇 곳에 있는 "레지스터" 만을 사용할 수 있음
MIPS에서 레지스터의 크기는 32비트임 ( = 1워드)
1바이트는 8비트 / 1워드는 4바이트
보통 컴에는 32개의 레지스터가 잇음.
산술 연산자의 각 피연산자는 32개의 32비트 레지스터 중 하나여야 함
설계 원칙 2 : 작은 것이 더 빠르다.
레지스터가 많아지면 클럭 사이클 시간이 길어짐(하지만 32보다 줄인다고 해서 빨리자지 않음 주의)
MIPS에서 레지스터를 표현하는 법 : 달러 기호$ + 두 글자
<메모리 피연산자>
단순 변수 외에 배열이나 구조체 같은 복잡한 자료에서 레지스터 개수보다 많은 데이터 원소가 있을 시 이런 구조는 어떻게 표현되고 사용되는가?
메모리에 보관됨
MIPS의 산술연산은 레지스터에서만 실행되므로 메모리와 레지스터 간에 데이터를 주고받는 명령어가 필요
: 데이터 전송 명령어
명령어는 메모리 주소를 지정해야 함
메모리에서 데이터의 위치를 찾기 위해서 배열의 시작 주소 + 인덱스 넘버를 씀
=>인덱스 번호 부분 : 상수 , 시작 주소 : 베이스 레지스터
메모리에서 레지스터로 데이터를 복사해 오는 데이터 전송 명령 : 적재
MIPS에서의 적재 명령어 : lw(load word)
적재 명령 : 연산자 이름+ 메모리에서 읽어 온 값을 저장할 레지스터 + 메모리 접근에 사용할 상수, 레지스터 로 구성
'📖 CS > 컴퓨터구조' 카테고리의 다른 글
🖥컴퓨터구조 - 명령어의 컴퓨터 내부 표현 (0) | 2023.09.22 |
---|---|
🖥컴퓨터구조 - 부호 있는 수,부호 없는 수 (0) | 2023.09.20 |
🖥컴퓨터구조 - 전력 장벽 (0) | 2023.09.12 |
🖥컴퓨터구조 - 성능 (0) | 2023.09.08 |
🖥컴퓨터구조 - 프로세서와 메모리 생산 기술 (0) | 2023.09.08 |