■ 컴퓨터란?
사술, 논리 연산을 자동으로 실행해주는 전자장치
■ 컴퓨터 역사
- 컴퓨터는 탄생한지 100년도 채 되지 않았다
- ENIAC은 1946년에 탄생한 최초의 컴퓨터이고, EDSAC은 최초로 프로그램이 탑재된 1969년에 탄생한 컴퓨터이다.
■ 컴퓨터의 종류
- 개인컴퓨터 : 일반 데스크톱
- 서버컴퓨터 : 네트워크 기반 컴퓨팅, 사용자 다중 접속 가능
- 슈퍼컴퓨터 : 연산력이 좋은 비싼 컴퓨터
- 임베디드컴퓨터 : 전력 소모가 적고 성능이 디바이스에 맞춰져 있는 제품
■ 컴퓨터의 구성요소
1. input
2. output
3. memory
4. datapath
5. control
■ 소프트웨어 종류
- 응용 s/w : 고급언어로 작성됨. 예) 문서 작성 프로그램, 개발 툴
-> 하드웨어 몰라도 됨
- 시스템 s/w : 자원을 제어하고 관리. 예) 운영체제
-> 하드웨어 구송요소 이해해야 됨
■ 프로그램 코드 변환과정
High-level 언어 : 사람이 이해하기 좋은 언어
↓ Compiler
어셈블리 언어 : 프로세서 종류에 따른 명령어로 변환
↓ Assembler
기계언어 : binary code,컴파일러와 일대일 매핑돼서 번역
■ ARM 기반 프로세서 명령어 집합 LEGV8 사용
operator destintion operands, src1 operands, src2 operands
■ c코드 -> 어셈블리어 변환 예시
c코드 :
f = (g+h) - (i+j);
compiled LEGv8 code :
// dest, src1, src2 순으로 작성
ADD t0, g, h // temp to = g+h
ADD t1, i, j // temp t1 = i+j
SUB f, t0, t1 // f = t0 - t1
■ 엔디언
- 빅엔디언 : 메모리의 lsb, msb와 반대로 바이트가 포매팅
- 리틀엔디언 : 매모리의 lsb, msb 맞춰서 포매팅
▣ 명령어 타입 세가지
1. 레지스터 명령어
2. 메모리 명령어
3. Immediate 명령어
알아야 할 단위!
- 1Byte = 8bit
- half = 16bit = 2Byte
- word = 32bit = 4Byte
- doubleword = 64bit = 8Byte
■ 1. 레지스터 명령어
- LEGv8은 32*64bit 레지스터 파일을 가지고 있음
- X0 ~ X30 까지는 개인 목적의 레지스터 -> 사용자가 작성
- W0 ~ W30 까지는 서브 레지스터
- XZR는 0으로 채워져있고, 읽기만 가능한 영역
- 총 256Byte

■ 2. 메모리 명령어
- 레지스터는 256Byte 공간만을 사용하기에 너무 적은 편이다. 따라서 메모리 주소공간을 사용한다.
- 메모리와 레지스터 사이에 옮기고 가져오는 작업을 Load & Store 명령어로 작성 가능
- 이때, 메모리는 Byte단위이고 레지스터는 8Byte 단위이다.
- 따라서 메모리와 레지스터는 8 offset
(offset : 프로세서와 메모리 단위 차이)

// LDUR : Load Mem to Reg
LDUR x9, [x22, #64]
// dst, src, src
// R[x9] = M[R[x22] + 64] = M[1064] = memory A[8] 값
ADD x9, x21 , x9
// dst, src, src
// R[x9] = R[x21] + R[x9]
// STUR : store Reg to Mem
STUR x9, [x22, #96]
// src, dst
// M[R[x22] + 96] 를 A[12]에 store해라
■ Immediate 명령어
- 명령어 끝에 I가 있으면 Immediate 명령어
ADDI x22, x22, #4 // #4 라는 정적변수를 사용한 예시
~ 134쪽
'FW 심화 과정 > [1] HDL, ARM프로세서설계' 카테고리의 다른 글
0629 ARMV8기반 싱글 프로세서 원리 (0) | 2022.06.29 |
---|---|
0628 컴퓨터 구조 이론 (2) Assembly->Machine (0) | 2022.06.28 |
Instruction Format (0) | 2022.06.28 |
0624 FPGA 실습 (4차실습) (0) | 2022.06.25 |
0623 { 게이트, 데이터플로우, 동작적행위 }모델링 (0) | 2022.06.23 |
0623 실습 3-1~3-3 (0) | 2022.06.23 |