ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 명령문구조
    프로그래밍언어론 2023. 4. 14. 21:27

    명령문집합 구조

    명령문 집합은 기계마다 다르다.
    공통되는 명령문은 계산, 데이터 이동, 제어 명령문이다.

    CISC

    • 하드웨어를 주로 사용
    • 여러 클락을 복잡한 명령문을 가짐
    • 명령문 안에서 메모리에서 메모리 load, store가 가능하다.
    • 명령문당 높은 사이클과, 작은 코드를 가진다.
      • 하드웨어에서 복잡한 연산을 하기 때문에
    • 복잡한 명령문을 가지기 때문에 저장공간이 크고, 여러 기능을 지원하는 회로를 포함한다.
      • 메모리의 data를바로 연산하기도 한다.

    CISC는 명령문의 수가 적기때문에 한 명령문이 복잡한 일을 한다.
    명령문마다 길이가 다르기 때문에 사이클이 다르다

    하드웨어가 복잡하다.

    RSIC

    • 소프트웨어를 주로 사용한다.
    • 단일 클락의 간단한 명령문을 가짐
      • 명령문의 갯수가 많다.
    • 별도 명령문으로 레지스터와 메모리간 load, store 수행이 가능
    • 사용하는 레지스터가 많음
    • 최소한의 기능을 지원하는 회로를 사용

    명령문의 사이클을 줄이고, 단순한 명령문을 사용한다.
    따라서 명령문의 길이가 동일하다.
    명령문이 많으니 동시에 실행이 가능하다.

    파이프라인에 유리하다.

    RISC가 우수한 점이 많기때문에 프로세서 발전방향에 맞다.
    메모리 가격이 다운되고, 컴파일러 기술이 향상된다.
    (파이프라인과 잘 맞음)

    CISC X86은 시장 점유율이 높고 후방 호환성을 유지한다.
    인텔이 기술력이 좋아서 CISC성능이 RISC 못지않다.
    요새 CISC를 RISC형식으로 바꿔서 파이프라인을 도입한다.

    주소모드

    두개주소 또는 세개 주소를 사용한다.

    • 이진 연산자: 피연산자 두개, 결과값 한개
    • 세개 주소 방식은 명령문에 주소가 3개가 들어가도록 하는 방식으로 유연하다.
    • 두개 주소방식은 한개가 덮어써진다.

    RISC
    레지스터에 있는 값만 계산이 가능하다. 따라서 레지스터에 값이 들어가야 한다.

    메모리에서 레지스터로 load 해야한다.

    • 이진연산 명령문: 레지스터 세개
    • load, store 명령문이 별도
    • 기준 주소는 레지스터, 명령문 안에 오프셋(명령문에 어떤 기준 주소인지 명시)
    • load, store의 주소: 인덱스 주소방식.

    CISC
    레지스터-메모리 구조

    명령문에 메모리 주소를 가져온다.

    • 복잡한 주소 계산 방식을 지원한다.
    • 레지스터 주소값에 상수를 더하거나 곱할 수도 있다.

    이진연산자 명령문에 레지스터와 주소는 하나는 덮어써진다.
    메모리 주소표현 방식으로 주소가 나타나는 위치는
    레지스터, 메모리, 명령문 안쪽이다.

    조건과 분기

    분기
    PC를 변경한다.

    조건문, 반복문, 함수 호출

    조건분기

    조건 분기는 조건에 따라서 분기를 하는 것이다.
    이때 프로세스의 상태 레지스터를 이용하여 검사한다.
    계산연산은 상태 레지스터의 해당 비트를 변경한다.

    0인지, 음수인지, 오버플로우

    명령문: jne, jg, jle… 뒤에 주소가 나온다.

    728x90

    '프로그래밍언어론' 카테고리의 다른 글

    제어흐름-수식1  (0) 2023.04.15
    현대의 컴파일  (0) 2023.04.15
    아키텍쳐 - 1  (2) 2023.04.14
    다형성 및 관련  (2) 2023.04.12
    범위내 바인딩  (0) 2023.04.12

    댓글

Designed by Tistory.