2017년 3월 20일 월요일

computer architecture (2) - instruction

명령어의 집합 구조

  : CPU는 명령어를 수행하는 녀석이였다!(이전에)
 
그렇다면 명령어란 무엇이고 무엇이 있을까?

  1. 명령어란?

  : 주소 + 동작(operand +  operation)이다



  명령어의 구성요소

  : 1) operand(동작의 대상)
    2) opcode(=operation code, operand가 결정되는 방법)
    3) mode (operand가 결정되는 방법을 나타내는 부분=> 주소의 수)

 따라서, 명령어의 갯수는 operand의 수 * operation * mode 개 존재한다.
 예를 들어, 각각 10개씩 존재한다면 10 * 10 * 10 = 1000개의 명령어가 존재하게 된다.

그렇다면 명령어가 많으면 다양한 처리를 할 수 있게되니 많을수록 좋은 것일까?
--> NO!, CPU가 가질수 있는 자원은 한정되어져있다. 많은 명령어를 해석하기 위해
    decoder가 복잡해지면 다른 장치들이 가질 수 있는 자원들이 줄어들게 된다.
    예를 들어, register가 커지면 CPU의 속도가 빨라지는 한편 decoder의 영역이 줄어들어
   처리할 수 있는 명령어의 갯수가 줄어들게 된다.

  이러한 딜레마 때문에 2가지 유형의 CPU가 등장하게 된다. ==> RISC, CISC

  RISC는 명령어의 사용빈도를 고려하여 명령어의 처리를 결정하는데, 사용빈도가 높으면 자신이 처리하고 사용빈도가 적으면 compiler에게 자신이 알아들을 수 있는 명령어로 바꿔서 알려달라고 요청한 뒤 처리함으로 decoder를 보다 간단하고 적은 명령어를 사용하게 된다. 이를 통해 명령어가 적음에도 불구하고 CISC와 비슷한 처리능력을 낼 수 있다. 게다가 RICS는 CISC에 비해 간단한 명령어의 조합으로 이뤄져 cycle이 더 적고 덜 복잡하며 속도가 빠르다. 그리고 간단한 명령어들를 주로 사용하므로 길이가 고정되어 있어 이들의 조합으로 프로그래머는 불필요한 코드나 낭비되던 사이클을 줄일 수 있게 되므로 핸드폰같은 작은 전자기기에서 주로 사용하게 된다.

  반면,  CISC는 모든 명령어를 자신이 처리하여야 함으로 decoder가 복잡하고 속도가 느리며 더 많은 사이클을 가지게 된다. 단, 복잡한 명령어들을 RISC보다 더 많이 사용할 수 있어 명령어들의 길이가 가변적이지만 하나의 명령어를 통해 많은 일을 한 번에 해결할 수 있으므로 주로 테블릿에서 사용하게 된다.

  2. 주소의 수

   : 명령어를 표현하는 주소의 수(mode)의 종류는 4가지가 있다.
    1) 3-주소 명령어 : A <- B - C
    2) 2-주소 명령어 : B <- B + C
    3) 1-주소 명령어 : B <- (B)'
    4) 0-주소 명령어 : 스택연산 or 큐연산

























댓글 없음:

댓글 쓰기