CPU 구조 - 32-bit vs 64-bit

2014. 10. 23. 13:18 from Computing
출처


컴퓨터에서 32 bit 가 뭐고 64 bit 가 뭔가 ?
먼저 memory 에 대해서 말해보겠다





Register 

메모리가 값을 가지고 있을 때, 주소를 가진다.
네 가지 숫자를 가진다면 접근하기 위해서 네 개의 주소가 필요하다.

이 때 cpu 는 register 에 주소를 저장하여 메모리 주소를 찾아간다.
이게 2bit 면 2의 2승=4 가지의 주소를 가진다.

즉, Register 의 bit 수 만큼 CPU가 메모리에 접근가능한 수가 증가한다.

16 bit register 는 2의 20 승   => 1MB 메모리 접근 (limit) 
32 bit register 는 2의 32 승은 => 4GB 메모리 접근 가능하다는 것

메모리 제한은 CPU의 register 때문에 온다. 




Instruction set 

은 cpu 에서 어떤 작업을 수행할 때 지시하는 code 다
add, decrement, loop 등을 코드값 1000, 1001, 1100 등으로 나타낸다

다른 CPU 간에는 instruction set 이 호환되지 않는다, 가령, Intel 8086 과 Motorola 68000 간은
마치 영어와 프랑스 어간에 이해가 안되는 것 처럼 호환이 안된다고 할 수 있다.








Intel 8086 은 16 bit 이다
80386 은 32 bit  register 와 32 bit instruction set 을 가진다. (내부적으로 16bit instruction set도 호환된다)

Pentium 도 32bit 다

Itanium 는 완전히 다른 구조를 가진다. 
(IA64 : Intel Architecture 64) 
64 bit register 와  64bit instruction set 을 가진다.
그러나 64 bit instruction set 은 32 bit 와 호환되지 않는다. 

여기서 프로그램 호환 문제가 있으니, 
인텔이 별도의 번역하는 device 를 추가해서 32 bit instruction set 으로 호환시켜 줄 수 있도록 한다. 



IA32 는 Intel Architecture 32 다. 
X86 도 32 bit
IA64 는 Intel Architecture 64 다
X64 도 64 bit







'Computing' 카테고리의 다른 글

CPU 아키텍쳐를 알아보자  (0) 2014.10.23
Posted by FindZone :

CPU 아키텍쳐를 알아보자

2014. 10. 23. 13:17 from Computing
CPU 에서 어떤 일이 일어나는지 알아보겠습니다.
이 내용은 Scott CPU 라는 것이며, 현대의 CPU 구조는 다를 수 있습니다.
CPU 구조의 설명을 위한 자료이니 참고하기 바랍니다.

출처:
http://www.youtube.com/watch?v=cNN_tTXABUA&list=PLujhvpOxNl1PncvpZD7mWTIhA1wX0aP2W



마더보드에는 cpu 가 장착되며, 컴퓨터의 컴포넌트 간을 연결해준다
오른쪽에는 RAM 이 있다. Random Access Memory 을 뜻하며, CPU에 의해 수행되는 모든 data 를 가지고 있다
CPU 와 RAM사이에 어떤 동작이 일어나는지 살펴보자 

RAM 은 주소와 데이터로 이루어지는데, 주소(회색부분) 을 가지며, 각 주소는 data(흰색부분) 이다
CPU 는 RAM 으로 보통 각각의 데이터를 순서대로 요청하고 처리한다 
하지만 순서와 다르게 처리하도록 CPU 가 요청 받을 경우에는 그렇게 할수 있다.
이게 바로 RAM 이라고 부르는 이유이다(Random Access Memory)

즉, Data는 필요하면 랜덤하게 접근될 수 도있고, 순서대로 접근할 수도있다.


컴퓨터가 처음 프로그램을 구동하면, 그것이(프로그램?)  그 프로그램을 받기 위해서 주소를 RAM에 보낸다.
"enable" 이 켜지면, 어떤 데이터가 있던 그것을 cpu 로 가져온다. 
그 데이터는 CPU 에서 처리가 된다
그 다음 주소값이 있으면 "enable" 켜지고, 또 다른 데이터를 가져온다

이번에 CPU가 데이터를 RAM에 저장하려고 하는경우에는
"set" 을 켠다. 
 그럼 새로운 데이터는 기존의 값을 엎어치게된다.





RAM에 데이터는 모두 0,1 로 이루어져있지만, 각기 다른 의미를 가지는 데이터를 가진다.
 중요한 의미를 가지는 instruction 이 있다. 이것은 CPU가 어떤 작업을 할지 지시한다.
그리고 , "number" 가 있다. 
그 다음에는 "주소" 가 있다. 주소 자체가 데이터인 것이다.
이 주소는 여러가지로 쓰인다. 결과 데이터를 외부장치로 보낼때 주소값으로 쓰인다.(프린터나 모니터..)
그리고 "letter" 가 있다. 글자를 모니터에 표시할때를 생각하면 된다. 글자역시 0,1로 이루어진다.
이 값은 arbitrary 다. 01100001 을 a 로 쓰는 식.



Instruction 에는 "LOAD", "ADD", "STORE", "COMPARE", "JUMP IF", "JUMP" , "OUT", "IN" 등이 있다
프로그래머가 순서대로 진행하지 않고, RAM의 다른 주소로 옮겨갈 때 JUMP instruction 을 쓴다.
외부 장치로 내보낼때는 "OUT", 키보드 같은 외부장치에서 입력받을 때는 "IN" 을 사용한다. 

그럼 gussing 게임 프로그램을 생각해보자.
첫번째 데이터에 "LOAD" instruction 이 먼저 있고, 다음 데이터에 숫자 "9" 가 있다.
이에 따라 숫자 9를 메모리에서 로딩해서 cpu 로 가져간다.
그리고 IN, keybord 값에 따라 키보드에서 값을 입력받는다.
그리고 "COMPARE"에 따라 9와 입력값을 비교한다. 
두 값이 같지 않으면 계속 반복하고, 같으면 다른 주소로 jump 한다.

이제 CPU 안쪽을 살펴보자


CPU 안에는 Control unit 과 ALU 가 있다.
Control unit 은 선장처럼 모든 걸 관장한다. ALU 는 연산을 담당한다.
더하고, 비교하는 등

input A, B 가 있으며, 
Control unit 은 RAM에서 instruction 을 가져온다.
작업의 종류가 ALU 로 전달된다.
 



그리고 ALU 의 출력쪽에는 register 가 연결되어있다.
이는 RAM과 비슷한 동작을 하는데, 값을 저장하고 꺼낼수 있다. 
intruction 이 진행중일 때, 값을 임시로 저장하므로써 CPU 의 속도를 빠르게한다.




Register에도 "set" 이 세팅되지 않으면 값이 저장되지 않는다. RAM과 마찬가지.
그리고 "enable" 이 세팅되어야 register의 값이 밖으로 보내진다. CPU bus 로.
앞에서 마더보드에서 설명했듯이 cpu bus 는 요소간을 연결하는 선들의 집합이다.

그리고, 다른 register 도 버스에 연결되어있다.
이들 register 에는 instruction에 의해서 저장된 값들을 가지고 있다.
 네 개의 register 는 값을 저장하는데 쓰인다.




그리고 이 register 의 값은 temporary register 로 저장될 수 있다. 
temp register는 "enable"이 없고, "set" 만 있다. 오로지 ALU 로 내보내기만 하기 때문이다. 
다른 register랑 충돌하지도 않음.
input A 는 temp register 없이 직접 버스에 연결된다.

 



그리고 "instruction" 을 받기 위해서 "instruction " register 가 있다.
이 지시는 "type of operation" 을 통해서 ALU 로 전달된다.
그리고 "COMPARE" instruction 이 있을때, flags 가 쓰인다.
A가 크다. 같다. set. 등으로 표시를 할 수 있다.
flag 가 "set"이면 compare를 마치고 다음 지시를 따른다. 가령 jump.
jump if 등을 할 때는 cpu 내부적으로 instruction과 flag 를 같이 사용한다



그리고 또 하나의 중요한 regiser.
 'instruction address' register 를 사용하여 다음 instruction 이 
RAM의 어떤 주소에서 올게 될지를 알게 된다.



"jump if " instruction 을 받고, flag 가 equal 이면, jump 를 트리거한다.
이 때 jump 를 하게 되면 "instruction address" register 로 다음 데이터 조각(주소) 을 넣는다.
그리고, 해당 주소값은 enable 하게 되면 wire로 신호가 흘러간다.



또 하나 'memory address' register 가 있다.
set 만 있어서, set으로 값을 저장하면 그때 RAM의 주소로 값이 들어간다.

그리고 다음 지시에서 출력을 한다면 외부로 가는 wire를 사용한다.
최근의 cpu 는 초당 이런 작업을 10, 100, ~ billion까지도 하게 된다.
현대의 cpu 는 이런 scott cpu 보다 더 복잡하지만 기본은 구조는 마찬가지라고 보면된다.

  

크게 보자. 오른쪽 두개는 set, enable wire. 
왼쪽 네개는 in, out wire.
위에 8개는 address wire
아래 8개는 data wire 다



다시 확대하면 이 그림이 된다.
이제 CPU동작을 알게되었다. 
wire로 전기신호를 보내면서 값을 cpu 와 ram간에 주고받는다.

- 불펌금지 -



'Computing' 카테고리의 다른 글

CPU 구조 - 32-bit vs 64-bit  (0) 2014.10.23
Posted by FindZone :
How Authentication Center (AUC) Works In GSM

When we talk about Mobile Business then its worst useful without authentication means to make Network as business all user required to be authenticate lets understand how authentication done in gsm.


Authentication Center (AUC)

The AUC is a processor system, it performs the “authentication” function. It will normally be co-located with the Home Location Register (HLR) as it will be required to continuously access and update, as necessary, the system subscriber records.

The AUC/HLR centre can be co-located with the MSC or located remote from the MSC. The authentication process will usually take place each time the subscriber “initializes” on the system.

인증센터 (AUC) 는 인증 기능을 수행하는 프로세스이다. 보통 HLR 과 함께 있다.
AUC/HLR 센터는 MSC 와 같이 위치하거나, MSC 와 떨어져서 위차할 수 있다. 인증 절차는 가입자가 보통 시스템을 “초기화” 할때마다 일어난다.





Authentication Process

인증절차 관련해서, VLR 이 인증에 필요한 모든 정보(Kc, SRES, RAND ) 를 가지고 있다고 가정한다. 정보가 없으면 HLR 에 요청할 것이다. 

1. 트리플(Kc, SRES,  RAND ) 의 정보가 VLR 에 저장된다
2. VLR 이 MSC/BSS 를 통해서 MS (비암호화된) 로 RAND 를 보낸다
3. MS 가 A3, A8 알고리즘, 그리고 MS SIM카드에 저장된 Ki 를 사용하여, VLR에서 받은 RAND를 이용하여 SRES와 Kc 를 계산해낸다
4. MS 가 SRES (비암호화된) 를 VLR 로 보낸다
5. VLR 에서, SRES 의 값이 단말에서 받은 SRES와 비교된다. 만약 두 값이 일치하면, 인증이 성공한다
6. 만약 cyphering 이 사용되면, 할당된 트리플에서 Kc 가 BTS로 보내진다
7. 단말은 RAND, A8 그리고 SIM에 있는 Ki 로부터 Kc 를 계산해낸다
8. Kc , A5, GSM hyperframe number를 사용하여, MS 와 BSS 사이에 암호화가 이제 air 단에 일어날 수 있다. 

트리플은 다음에 의해서 AUC에서 생성된다 
     . RAND : 임의로 생성된 숫자
     . SRES : A3 (RAND, Ki) 에서 얻어진다
     . Kc : A8  (RAND, Ki) 에서 얻어진다
     . A3 = IMSI 의 할당과 SIM 카드의 생성시에 정의된 1~16 까지의 가능한 알고리즘
     . A8 = IMSI 의 할당과 SIM 카드의 생성시에 정의된 1~16 까지의 가능한 알고리즘
     . Ki = A3, A8 의 버젼과 함께 랜덤으로 할당된 인증키

처음 가입자가 전화를 할때, full 인증 절차가 일어난다. 
그러나, 주어진 시스템 제어 기간 내에서, 혹은 단일 시스템의 사업자 망내에서 시도된, 그 다음 호에 대해서는 처음 인증에서 생성된 데이터를 여전히 사용할 수 있기 때문에, 인증이 필요하지 않을 것이다. 


'모바일 / 서비스' 카테고리의 다른 글

단말기 SIM, Ki인증  (0) 2014.10.02
IMEI, IMSI, MSISDN 단말식별자  (0) 2014.10.02
VoLTE overview #2  (0) 2014.06.10
VoLTE 알카텔 루슨트 #1  (0) 2014.06.10
VoLTE | EPS의 이해  (0) 2014.06.10
Posted by FindZone :