변위 주소지정 방식 

EA=A+(R)

PC -> 상대 주소지정 방식

인덱스 레지스터 -> 인덱스 주소지정 방식

베이스 레지스터 -> 베이스-레지스터 주소지정 방식

 

상대 주소지정 방식

- PC를 레지스터로 사용하여 EA 계산 => EA = A + (PC) / 단, A는 2의 보수

- 분기 명령어에서 주로 사용 

-> A>0 : 앞방향 분기, A<0 : 뒷방향 분기

장점 : 전체 기억장치 주소가 명령어에 포함되어야 하는 일반적인 분기 명령어보다 적은 수의 비트만 필요

단점 : 분기 범위가 오퍼랜드 필드의 길이에 의해 제한 (오퍼랜드 비트들로 표현 가능한 2의 보수 범위)

 

인덱스 주소지정 방식

- 인덱스 레지스터의 내용과 변위 A를 더해 유효 주소를 결정

- IX는 인덱스 값 저장하는 특수 레지스터 

-> EA = A + (IX) 

데이터 처리 시 인덱스 1씩 증가하여 사용 -> 자동으로 해주는 기능 : 자동 인덱싱

 

베이스-레지스터 주소지정 방식

- EA = (BR) + A

BR=베이스 레지스터

인덱스 레지스터 -> 명령어에 포함된 주소 A기준으로 인덱스 값 저장, 베이스 레지스터->기준이되는 명령어 주소 저장

즉, 베이스 레지스터는 프로그램 시작 위치 지정하는데 사용

주요 용도 : 프로그램의 위치 지정 혹은 변경에 사용

 

CISC(Complex Instruction Set Computer) 프로세스

- 명령어 수가 많다.

- 명령어 길이가 일정하지 않다. (종류에 따라 다름)

- 주소 지정 방식이 매우 다양함

ex) PDP 계열 프로세서에서 사용

 

RISC(Reduced Instruction Set Computer) 프로세스

- 명령어들의 수를 최소화

- 명령어 길이를 일정하게 고정

- 주소지정 방식의 종류를 단순화

ex) ATmega microcontroller에서 사용

 

PDP-10 프로세서 : 고정 길이의 명령어 형식 사용

- 단어 길이 = 36비트, 명령어의 길이 = 36비트

- 연산 코드 = 9비트 -> 최대 512종류 연산 허용 (실제 365)

PDP-11 프로세서 : 다양한 길이의 명령어 형식들 사용

- 연산 코드 = 4~16비트

- 주소 개수 = 0,1,2개

- 명령어 13가지

- Source(근원지), Dest(목적지) -> 레지스터 번호, 주소 지정 방식 비트 포함 -> 6비트

- Offset : 상대 주소지정 방식을 위하 ㄴ변위

- FP : 부동소수점 레지스터 번호

- CC : 조건 코드 필드

 

펜티엄 계열 프로세서의 명령어 형식

- 선형 주소(LA) 프로세서가 발생하는 주소 = EA + SR

주소지정 방식

즉시 방식 : 데이터 = A

레지스터 방식 : EA = R / LA = R

변위 방식 : EA = A / LA = (SR) + EA
베이스 방식 : EA = (BR) / LA = (SR) + EA

변위를 가진 베이스 방식 : EA = (BR) + A / LA = (SR) + EA

변위를 가진 인덱스 방식 : EA = (IX) + A / LA = (SR) + EA

인덱스와 변위를 가진 베이스 방식 : EA = (IX) + (BR) + A / LA = (SR) + EA

상대 방식 : EA = (PC) + A / LA = EA

 

ATmega Microcontorller 명령어 형식

Atmega128 microcontroller의 CPU 코어

- 8비트 CPU

- 명령어 길이 = 16비트

- 기억장치 엑세스 명령어들(LOAD, STORE) 32비트

- RISC 프로세서

특징

- 연산 코드의 비트 수가 명령어에 따라 달라짐

- 오퍼랜드 위치가 유동적

 

ARM 계열 프로세서

- 32비트 RISC 프로세서

- 개방형 아키텍처

- 모바일 시스템용 프로세서

- 명령어 필드 ( 분기조건 필드, 연산 필드, 오퍼랜드 필드, 조건 플래그, 레지스터 필드, P,U,W 비트, B 비트)

 

ALU 구성 요소

1. 산술 연산장치

2. 논리 연산장치

3. 시프트 레지스터

4. 보수기 : 2의 보수 변화(음수화)

5. 상태 레지스터 : 플래그 저장

 

정수 표현

- 2진수 체계

 

음수 표현 방법

1. 부호화-크기 표현

- 맨 좌측은 부호 비트, 나머지 n-1은 크기를 나타내는 방식

-> 덧셈 뺄셈을 하기 위해 부호 비트와 크기 비교하느 부분에서 복잡한 과정 필요

-> n비트 단어로 표현할 수 있는 수가 2^n이 아닌 2^n-1로 감소

2. 1의 보수 표현

- 모든 비트 반전

- 10진수 범위 -> -2^7-1 ~ 2^7-1 => 255가지 표현

3. 2의 보수 표현

- 모든 비트 반전후 1을 더함

- 10진수 범위 -> -2^7 ~ 2^7-1 => 256가지 표현

 

비트 확장

- 데이터의 길이를 늘리는 방법

-> 데이터를 더 많은 비트의 레지스터에 저장하거나 더 긴 데이터와 연산을 수행하기 위해 필요

- 1의 보수 : 부호 비트를 빼고 나머지를 0으로 채우는 방식 (부호 비트는 맨 왼쪽으로)

- 2의 보수 : 부호 비트를 맨 왼쪽으로 빼고 나머지를 부호 비트와 같은 값으로 채우기

 

논리 연산

- NOT, AND, OR, XOR

 

논리 연산을 위한 하드웨어 모듈

- 입력 비트들은 모든 논리 게이트들을 통과

- 선택 신호들에 의해 멀티플렉서의 네 입력들 중 하나 출력

 

N-비트 논리 연산장치

- N-비트 데이터들을 위한 논리 연산 장치 -> 기본 논리 모듈을 병렬로 접속

 

AND : 같으면 1 다르면 0

OR : 하나라도 1이면 1

XOR : 같으면 0 다르면 1

NOT : 비트 반전

 

선택적-세트 연산

-> OR 연산 이용 

선택적-보수 연산

-> XOR 연산 이용

마스크 연산 

-> AND 연산 이용

 

삽입 연산

->마스크 연산 (삽입할 비트 위치를 0으로 만들기 위함)

->OR 연산 (새로 삽입할 비트들과 OR연산)

->최종 삽입 완료

 

비교 연산

-> XOR연산

- 다르면 비트를 1로 세트

- 모든 비트가 같으면 Z 플래그를 1로 세트

 

시프트 연산

좌측 시프트 : 모든 비트를 좌측으로 한 칸씩 이동

- 최하위 비트 : 0이 들어옴, 최상위 비트 버림

우측 시프트 : 모든 비트를 우측으로 한 칸씩 이동

 

시프트 레지스터 : 시프트 기능을 가진 레지스터 내부 회로

 

순환 시프트 : 최 하위 비트 버리지 않고 반대편 끝으로 이동

 

직렬 데이터 전송

- 데이터 비트 수만큼 연속적으로 수행 -> 한 선을 통해 데이터를 전송(결론적으로 원본 데이터도 그대로, 데이터전송)

 

산술적 시프트 : 수를 나타내는 데이터 대한 시프트

- 시프트 과정에서 부호 비트는 유지, 수의 크기를 나타내는 비트만 시프트

1. 산술적 좌측 시프트

2. 산술적 우측 시프트

끝은 버려짐, 없는 부분은 끝 부분 복사

 

C 플래그를 포함한 시프트 연산 (데이터 1개 보관)

1. C플래그 포함한 좌측 시프트 SHLC

2. C플래그 포함한 우측 시프트 SHRC

RLC -> 순환 연산 추가 + 좌측

RRC -> 순환 연산 추가 + 우측

'학교수업' 카테고리의 다른 글

게임공학개론 5주차  (0) 2022.04.11
인공지능개론 5주차  (0) 2022.04.10
컴퓨터 그래픽스 5주차  (0) 2022.04.06
윈도우즈프로그래밍 4주차  (0) 2022.04.01
컴퓨터구조 4주차  (0) 2022.04.01

+ Recent posts