티스토리 뷰

목차

    RISC 명령어 집합, 코드 크기, 병목 현상에 대해서 [컴퓨터구조]


    RISC 명령어 집합과 인코딩


    압축 코드의 두 가지 기능 수행을 도움


    첫 번째,

    - 같은 양의 컴파일 된 프로그램의 유지를 위해 작은 메모리 장치를 갖는 컴퓨터 시스템을 허용

    - 여기서, 메모리 장치란, 디스크, 메인 메모리, (명령어) 캐시를 의미

    - RISC 메모리 장치는 작고, 빠르며 저렴하게 사용할 수 있음

    - 같은 크기의 메모리 장치는 컴파일된 코드를 더 많이 저장할 수 있음

    두 번째,

    - 기계 코드를 압축할 때, CPU가 원하는 속도(비용)로 명령어 fetch를 하기 위해 적당한 대역폭이 필요함

    - 이때 RISC에서 사용하는 버스들은 저렴

    - 같은 대역폭(Bandwidth)은 컴파일된 프로그램의 명령어 사이클(instruction cycle)을 더 빠르게 수행. (완료되는 시간을 줄임)


    버스의 크기 = 대역폭(Bandwidth)


    명령어 사이클 = Fetch Cycle + Execution Cycle


    세 번째

    - 코드를 압축하는 기존의 다른 방법보다 더 큰 비용이 필요할 가능성도 있음


    RISC 명령어 집합, 코드 크기, 병목 현상에 대해서 [컴퓨터구조]


    RISC 평균 코드 크기 감소


    Fetch가 필요한 명령어의 수를 줄임


    첫 번째

    - Huffman 인코딩 방식과 비슷한 명령어 형식을 이용

    - 변수가 명령어 안의 필드 수를 보유

    - 명령어 사용량의 상대 빈도와 필드 타입에 따라 선택


    두 번째

    - 자주 사용되는 기본 연산과 관련된 과정은 하나의 명령어로 만들 수 있음

    - 그 명령어에 중간 결과를 명시하는 필드를 배제하고, 복합 필드에 공통적인 연산 대상을 명시하는 것이 가능


    회로 (circuitry)


    RISC, 피해야 할 부정적 영향


    - CPU의 성능과 비용에 대한 명령어 압축, 결합을 신중하게 결정

    - 명령어 해독(decode), 실행 제어(control) 때문에 크기가 커질 수 있음

    - 명령어 encoding 과정이 복잡해 큰 비용이 필요함

    - 명령어를 병렬이 아닌 직렬로 디코딩할 때 성능이 심각하게 저하

    명령어 순서가 변할 때 제어(Control)가 필요(동작)


    병렬 프로세서 : 프로세서들이 하나의 큰 작업을 나누어 병렬로 처리하는 것


     - 중요한 명령어의 필드를 추출해 해석할 때, 다른 필드의 decode에 의지하면 안 됨

     - 명령어는 데이터 경로 안에 많은 중간 결과를 요구할지도 모름

     - 이럴 경우, 전류의 양이 증가해 실행 속도가 느려지고, 인터럽트 핸들링이 힘들어짐


    기계 코드 압축으로 성능 개선 (improve performance by compacting the machine code)


    RISC 명령어 fetch 시 병목 현상 완화


    - 기계 코드 압축으로 인한 성능 개선엔 한계점이 있음


    Fetch는 execution과 일부 중첩되어 fetch 시간을 감소해도 성과는 없음


    - 정교하지 않은 기계에선 fetch 사이클의 전체 버스가 계속 필요한 제한점

      : 명령어는 줄지만, 버스는 유지되어 그만큼의 공간이 낭비

      : 버스 사용이 늘면 버스 병목현상 발생


    - Integer 명령어는 fetch 사이클의 추가를 요구해 명령어들은 워드의 경계(word boundary)에 정렬되지 않음


    - 버스와 메모리 장치를 늘리는 데 비해 버퍼링 된 명령어를 편리하게 사용하면 기계 장치에 대한 비용을 낮출 수 있음


    RISC 명령어들


    간단한 명령어들이지만 코드 사이즈를 낭비하는 점에 대한 해결책


    - 명령어들은 항상 1 word로 구성

    - 하나의 사이클은 하나의 명령어를 fetch 하는 데 필요

    - Execute 사이클은 가능한 많은 작업을 수행하도록 정의

    - 디코딩과 필드 추출을 담당하는 칩의 면적은 1~2%에 불과

    - 또 다른, 간단한 해결책


    메모리 가격은 하락함


    메모리 낭비는 흔히 있는 일 (심각한 수준의 낭비가 아니면….)


    RISC 코드 크기


    - RISC도 명령어 집합(set)과 형식(format)이 있음


    - 다른 프로세서들에 비해 조금 크다

    - 압축된 VAX-11 코드 크기의 150%를 넘진 않음

    - 당시에 초당 백만 개의 명령을 수행


    RISC 코드의 크기.


    Garrison과 VanDyke


    - Instruction set, variable-length field, instruction들을 인코딩하여 크기를 얼마나 줄일 수 있는지 연구


    - 나중에 저장될 명령어를 가리키는(지시하는) 것이 가능

    - 다른 프로세서 코드와 같은 범위에서의 RISC 코드 크기를 의미


    Instruction Set and Code Compactness


    RISC 명령어 집합, 코드 크기, 병목 현상에 대해서 [컴퓨터구조]