Little Endian, Big Endian

Posted 2012. 10. 18. 14:12

다중 바이트로 이루어진 수를 단일 주소를 가진 하나의 데이터로 다루어야 할 필요가 있을때

어떠한 바이트 순서로 그 데이터를 배열 할 것인지를 엔디안(Endian)이라 한다.


아래의 123이 최상위 바이트( MSB : Most Significant Byte )

0x12345678

뒤의 678이 최하위 바이트( LSB : Least Significant Byte )


리틀 엔디안 : 낮은 주소에 최하위 바이트를 저장하는 방식

빅 엔디안 : 낮은 주소에 최상위 바이트를 저장하는 방식


 리틀 엔디안 방식↓

메모리 주소 

 메모리 내용

 0

 78

 56

 34

 12

빅 엔디안 방식↓

메모리 주소 

 메모리 내용

 0

 12

 34

 56

 78


각각 장점이 있는데 별 차이는 없고 다만 기계들과의 호환성에 문제가 있다.

인텔 계열은 리틀이고 morolora, 등등은 빅 엔디언 이다.

실수의 표현

Posted 2012. 10. 18. 13:59

실수는 소수점을 기준으로 왼쪽에 위치하는 수를 정수부라 하며 

오른쪽에 위치하는 수를 소수부라 한다.

컴퓨터에서는 이러한 실수에 대하여 정수부와 소수부로 분리해 표현하지 않고

수의 유효 자릿수들을 부호화된 고정 소수점을 나타내는 가수부와 그 수에서의 실제

소수점의 위치를 나타내는 지수부로 표현하는 부동 소수점 표기법( floating-point notation )을 사용함.

즉, 968.75라는 수는 0.96875*10³ 으로 표현할 수 있으며, 이때 96875를 가수 또는 공학 표기법에서는

주요부( significant ) 라고 하고, 10의 곱에 해당하는 3을 지수( exponent )라고 한다.

이때 공학 표기법에서 주요부는 항상 1보다 크거나 같고 10보다 작은 수의 범위를 사용하여 표기하게

되는데, 이를 표준 형식 ( normalized form ) 이라고 한다. 위 예제의 경우 9.6875*10²으로 표현하는

것이 표준 형식이다. 0.0096875라는 수를 표준으로 나타낼땐 지수부에 마이너스를 사용 함으로써

9.6875*10-³으로 표현한다.


컴퓨터에서는 0과 1의 바이너리를 사용하며, 부동 소수 형식 역시 바이너리 숫자 형태의

공학 표기법으로 기록해야 논리적 연산을 수행 할 때 편리해지게 된다.


됬고..


컴퓨터에서는 바이너리 부동 소수값을 저장 하는 규칙에 대하여 IEEE( Institute of Electrical and Electronics Engineers ) 에서 제시한 4바이트 단정도( single percision ) 와 8바이트 배정도

( double precision ) 을 사용 하고 있다.

단정도 형식은 3개의 부분으로 구성 되어 있다. 왼쪽 최상위 1비트는 정수에서와 같이

음수,양수를 나타내는 부호비트고, 다음 8비트는 지수부를 나타내며 나머지 23비트에 가수부의 내용을

저장하게 된다.


 1bit

8bit

23bit 

 부호(음,양)

지수부

가수부 

실제 유효 수를 나타내는데 쓰이는 가수부는 23비트이며, 23비트로 표현 할 수 있는 10진수의

자릿수는 7자리 정도다. 그래서 1234567.8 과 1234567.9는 같은 값으로 저장되어지는 문제점이 있다.



배정도 부동 소수 형식은 이러한 한계를 보다 많이 줄이고 보다 자세히 데이터를 표현 할 수도

있도록 그 크기를 증가시킨 것으로,


 1bit

11bit 

52bit 

 부호(음,양)

지수부 

가수부 

이렇게 되어 잇뙇

Memory Management Unit

Posted 2012. 10. 18. 12:22

MMU : 메모리 관리의 핵심적인 역할을 담당한다. 실제 메모리와 가상 메모리 사이에서 주소 변환

역할을 한다.


cpu가 사용 하는 주소 : 가상주소 ( virtual address )

memory가 사용하는 주소 : 물리적 주소( physical address )


컴퍼는 수행할 명령어의 주소를 가르켜야 하는데 이떄 가지는 값이 virtual address다.


MMU의 중요한 기능인 두 가지 이다.

1) HAT( Hardware Address Translation )

세그먼트와 페이징을 담당한느 하드웨어 부분.

실질적인 주소변환연산을 한다. H/W레벨에서 모두 처리 하며 연산된 결과는 TLB에

저장된다.


2) TLB( Translation Lookaside Buffer )

가상 메모리 시스템에서 페이징 작업을 수행하기 위해 가상 메모리의 내용을 실제 메모리값으로

변환하는데에는 많은 시간이 소요된다. TLB는 캐시의 개념을 이용 한 것으로 일정 개수만큼의

변환 내용을 버퍼에 보관하여 놓음으로써 변환에 드는 시간을 주여준다.


둘 다 MMU내에 존재한다.


TBL 미스 발생시 우선 페이지 테이블을 찾는다. 페이지 테이블도 페이지 프레임에 있기때문에

TLB검색이 발생한다. 만약 페이지 테이블을 담고있는 페이지 프레임의 정보가 TLB에 없다면

추가적인 TBL미스가 발생한다. 이런 반복이 큰 문제가 된다. 해결 방안으로 TLB엔트리를

위한 큰 소프트웨어 캐시를 사용하는 것이다. 이 개시는 고정된 위치에 있다.

이를 위한 페이징 저보는 항상 TLB에 존한다. OS는 소프트웨어 캐시를 먼저 검색함으로써

반복적인 TLB 미스를 줄일 수 있다.

soft miss : 참조하려는 페이지가 메모리에 있지만 TLB에 정보가 없어서 발생하는 결함

hard miss : TLB뿐만 아니라 메모리에도 참조하려는 페이지가 없으면 디스크I/O 발생



이런 MMU가 나온 이유는 메모리관리를 위해 완전히 소프트웨어가 담당하였던 것을

x86 386이후 운영체제를 만들때 소프트웨어적인 부담을 훨씬줄여주기 위해서 였다.

« PREV : 1 : ··· : 51 : 52 : 53 : 54 : 55 : 56 : 57 : ··· : 77 : NEXT »