[컴퓨터구조] Hardware/Software Interface

2021. 7. 5. 23:34Study/Computer Architecture

책과 PPT에 Hardware/Software Interface 라고 부록? 처럼 되어있는 부분이 있다. 

그 중 알아 두어야 할것 같은Bytes Addressing, Aligment restriction, Ediannes 에 대해 적어보려 한다. 


MIPS에선 32개의 register를 가지고 연산을 한다 각 register는 32bit로 구성되어 있다. 각 register = 32bit = 1data 단위 를 word라 한다. 

Memory에 저장된 data를 register에 가져와야 한다 이때 어떤 단위로 접근하여 data를 가져오는지에 따라 addressing 이 달라진다. 

위 같은 Memory 주소에서 data를 가져올때 파란색 주소처럼, word 단위로 가져오는걸 word addressing이라 한다. 

word addressing으로 가져온다면 int 와같은 4byte 단위의 data type을 다룰땐 편하지만, 더 작음 

1byte 단위이 char,bool 를 가져올땐 불편하다.

 

따라서 요즘엔 빨간색 주소처럼 이렇게 1byte단위로 접근하여 가져오는  byte addressing 을 이용한다. 

 

Aligment restriction

Memory 에 data를 저장할땐 항상 시작 주소가 4의 배수여야 한다. 라는 제약 조건이다.

여기 초록색 처럼 0 번째 주소에 1 word 에 data가 저장되어 있다면

한번에 다 가져올 수 있다.

 

하지만 빨간색 처럼 저장되어 있다면 1word의 data를 2번 에 걸쳐 읽어와야 하므로 data전송이 그만큼 느려지게 된다. 

 

 

 

 

 

 

Edian 

다음과 같은 data(1 word) 가 있다. 이러한 32 bit가 있을때 

 

각 bit는                 2^32~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~2^0  의 값을 가진다.

각 칸 하나는 1 byte에 해당한다. 이 data를 위 에서 언급한 byte addressing에 따라 접근 하려고 할때  시작 주소를 가장 왼쪽(최상위 bit)로 할껀지 or 가장 오른쪽(최 하위 bit)로 할껀지 에 따라 2가지로 나뉜다. 

Big Edian 

일반적으로 글을 읽을때 어떻게 읽을까? 를 생각하면 쉽다 나는 항상 왼쪽부터 읽는다. 

즉 첫번째 byte가 이 word의 시작 주소가 되어 memory에 저장된다.

big edian 방식으로 저장되어 있다면 항상 시작 주소에서 byte를 읽어와 2^31bit~2^23bit에 저장하면서 -> 2^7~2^0으로 불러와야 한다. 

2^31 -> 가장 큰 수 -> data에 가장 크게 영향 가능 -> BIG 으로 외워도 될것 같다. 

 

 

Little edian

Big edian 의 반대 이다. data의 가장 오른쪽 byte가 data의 시작 주소가 되어 저장된다. 

Little edian 방식으로 저장되어 있다면 항상 시작 주소에서 byte를 읽어와 2^7~2^02에 저장하면서 ->^31bit~2^23bit 으로 불러와야 한다. 

마찬가지로 

2^0 -> 가장 작은 수 -> data에 가장 작게 영향 가능 -> Little 로 외워 보자 .