제어 장치

Control unit

컨트롤 유닛(CU)은 프로세서의 동작을 지시하는 컴퓨터 중앙처리장치(CPU)의 컴포넌트입니다.CU는 일반적으로 바이너리 디코더를 사용하여 코드화된 명령을 다른 장치(메모리, 산술 논리 장치 및 입출력 장치 등)의 작동을 지시하는 타이밍 및 제어 신호로 변환합니다.

대부분의 컴퓨터 리소스는 CU에 의해 관리되며 CPU와 다른 장치 간의 데이터 흐름을 지시합니다.John von Neumann은 제어 장치를 von Neumann [1]아키텍처의 일부로 포함시켰습니다.현대 컴퓨터 설계에서 컨트롤 유닛은 일반적으로 CPU의 내부 부품이며,[2] 도입 이후 전체적인 역할과 동작은 변경되지 않았습니다.

멀티사이클 컨트롤 유닛

가장 단순한 컴퓨터는 다중 자전거 마이크로 아키텍처를 사용합니다.이것이 최초의 디자인입니다.그것들은 기계를 작동시키는 임베디드 시스템과 같은 아주 작은 컴퓨터에서도 여전히 인기가 있습니다.

다륜차 컴퓨터에서는 제어부가 명령 사이클을 순차적으로 밟는 경우가 많다.이는 명령어 가져오기, 피연산자 가져오기, 명령어 디코딩, 명령어 실행 및 결과를 메모리에 다시 쓰는 것으로 구성됩니다.다음 명령이 제어 유닛에 배치되면 명령이 올바르게 종료되도록 제어 유닛의 동작이 변경됩니다.따라서 명령의 비트는 제어 유닛을 직접 제어하고 제어 유닛은 컴퓨터를 제어합니다.

컨트롤 유닛은 컨트롤 유닛의 로직에 어떤 단계를 수행해야 하는지 알려주는 바이너리 카운터를 포함할 수 있습니다.

멀티사이클 컨트롤 유닛은 일반적으로 사각파 타이밍 클럭의 상승 에지 및 하강 에지를 모두 사용합니다.타이밍 클럭의 각 엣지에서 동작 스텝을 동작시키기 때문에 4단계 동작은 2클럭 사이클로 완료됩니다.같은 로직 패밀리를 사용했을 경우, 컴퓨터의 속도가 2배가 됩니다.

많은 컴퓨터에는 두 가지 유형의 예기치 않은 이벤트가 있습니다.일부 유형의 입력 또는 출력이 올바르게 작동하려면 소프트웨어 주의가 필요하기 때문에 인터럽트가 발생합니다.예외는 컴퓨터의 작동으로 인해 발생합니다.한 가지 중요한 차이점은 인터럽트의 타이밍을 예측할 수 없다는 것입니다.다른 하나는 일부 예외(예를 들어 메모리 사용 불가 예외)가 재시작이 필요한 명령에 의해 발생할 수 있다는 것입니다.

제어 장치는 두 가지 일반적인 방법 중 하나로 인터럽트를 처리하도록 설계할 수 있습니다.빠른 응답이 가장 중요한 경우 제어 유닛은 인터럽트를 처리하기 위해 작업을 포기하도록 설계됩니다.이 경우 마지막으로 완료된 명령 후 처리 중인 작업이 다시 시작됩니다.컴퓨터가 매우 저렴하거나, 매우 단순하거나, 매우 신뢰할 수 있거나, 더 많은 작업을 수행할 경우 제어 유닛은 인터럽트를 처리하기 전에 처리 중인 작업을 완료합니다.마지막 종료 명령을 기록하기 위해 레지스터가 필요하지 않기 때문에 종료는 비용이 저렴합니다.상태가 가장 적기 때문에 간단하고 신뢰할 수 있습니다.또한 최소한의 작업량만 낭비합니다.

매우 단순한 컴퓨터에서는 예외가 인터럽트처럼 작동하도록 할 수 있습니다.가상 메모리가 필요한 경우 사용할 수 없는 메모리 예외가 실패한 명령을 다시 시도해야 합니다.

다중 자전거 컴퓨터는 더 많은 사이클을 사용하는 것이 일반적이다.프로그램 카운터를 새로고침해야 하므로 조건부 점프를 수행하는 데 시간이 더 걸릴 수 있습니다.때때로 그들은 2진수 긴 곱셈과 나눗셈과 같은 과정을 통해 곱셈과 나눗셈 명령을 한다.초소형 컴퓨터라면 한 번에 1비트 또는 몇 비트씩 계산을 할 수 있습니다.일부 컴퓨터에는 여러 단계를 거쳐야 하는 매우 복잡한 명령이 있습니다.

파이프라인 제어 장치

많은 중급 복잡도 컴퓨터의 파이프라인 명령.이 디자인은 경제성과 속도감 때문에 인기가 있다.

파이프라인 컴퓨터에서 명령은 컴퓨터를 통해 흐릅니다.이 설계에는 몇 가지 단계가 있습니다.예를 들어, Von Neumann 사이클의 각 단계마다 하나의 단계가 있을 수 있습니다.파이프라인 컴퓨터는 보통 각 단계 뒤에 "파이프라인 레지스터"가 있습니다.이러한 비트는 스테이지에 의해 계산된 비트를 저장하기 때문에 다음 스테이지의 논리 게이트가 다음 단계를 수행하기 위해 비트를 사용할 수 있습니다.

짝수 스테이지가 사각파 클럭의 한쪽 에지에서 동작하고 홀수 스테이지가 다른 쪽 에지에서 동작하는 것이 일반적입니다.싱글 엣지 설계에 비해 컴퓨터 속도가 2배 향상됩니다.

파이프라인 컴퓨터에서 제어부는 플로우가 시작, 계속 및 정지되도록 프로그램 명령으로 배열합니다.명령 데이터는 보통 파이프라인 레지스터에서 한 단계에서 다음 단계로 전달되며, 각 단계에서 제어 로직은 다소 분리되어 있습니다.컨트롤 유닛은 또한 각 단계의 명령이 다른 단계의 지침 작동을 해치지 않도록 보장합니다.예를 들어, 두 단계가 동일한 데이터를 사용해야 하는 경우 제어 로직은 이 사용이 올바른 순서로 수행되도록 보장합니다.

효율적으로 작동하면 파이프라인 컴퓨터는 각 단계에서 명령을 받게 됩니다.그 후, 그 모든 지시를 동시에 실시하고 있습니다.클럭의 각 사이클에 대해 약 1개의 명령을 완료할 수 있습니다.프로그램이 결정을 내리고 다른 명령 시퀀스로 전환하면 파이프라인이 처리 중인 데이터를 폐기하고 재시작해야 하는 경우가 있습니다.이것은 "스톨"이라고 불립니다.두 가지 명령이 간섭할 수 있는 경우 제어 장치가 이전 명령이 완료될 때까지 이후 명령 처리를 중지해야 하는 경우가 있습니다.파이프라인의 일부가 명령을 처리하지 않기 때문에 이를 "파이프라인 버블"이라고 합니다.파이프라인 버블은 두 명령이 동일한 레지스터에서 작동할 때 발생할 수 있습니다.

인터럽트 및 예기치 않은 예외도 파이프라인을 정지시킵니다.파이프라인 컴퓨터가 인터럽트를 위해 작업을 포기하면 멀티사이클 컴퓨터보다 더 많은 작업이 손실됩니다.예측 가능한 예외는 지연될 필요가 없습니다.예를 들어 예외 명령을 사용하여 운영 체제를 시작하는 경우 정지가 발생하지 않습니다.

속도? 같은 전자논리 속도로 다륜구동 컴퓨터보다 초당 더 많은 명령을 내릴 수 있다.또, 전자 로직이 최대 속도를 일정하게 하고 있어도, 파이프라인내의 스테이지수를 변화시키는 것으로, 파이프라인 컴퓨터를 고속 또는 저속으로 할 수 있다.스테이지가 많을수록 각 스테이지의 작업량이 적어지기 때문에 스테이지의 논리 게이트로부터의 지연이 적어집니다.

이코노미?컴퓨터의 파이프라인 모델은 다륜차나 고장난 컴퓨터보다 더 적은 초당 명령당 논리 게이트를 갖는 경우가 많습니다. 왜일까요?평균 단계는 다중 자전거 컴퓨터보다 덜 복잡하다.고장난 컴퓨터는 보통 어느 순간에나 대량의 유휴 논리를 가지고 있습니다.비슷한 계산을 통해 파이프라인 컴퓨터는 명령당 소비 전력이 적다는 것을 알 수 있습니다.

그러나 파이프라인 컴퓨터는 보통 비슷한 다륜차 컴퓨터보다 더 복잡하고 더 비싸다.일반적으로 더 많은 논리 게이트, 레지스터 및 더 복잡한 제어 장치가 있습니다.마찬가지로 명령당 소비되는 에너지는 적지만 총 에너지 소비량은 더 많을 수 있습니다.CPU는 한 번에 여러 명령을 수행할 수 있기 때문에 보통 초당 더 많은 명령을 수행할 수 있습니다.

막힘 방지

제어 유닛은 파이프라인을 가득 채우고 스톨을 피하기 위해 많은 방법을 사용합니다.예를 들어, 단순한 제어 유닛이라도 하위 번호의 이전 명령에 대한 역방향 분기는 루프이며 [3]반복된다고 가정할 수 있습니다.따라서 이 설계의 제어 유닛은 항상 역방향 분기 경로로 파이프라인을 채웁니다.컴파일러가 가장 자주 취하는 브랜치의 방향을 검출할 수 있는 경우, 컴파일러는 가장 자주 취하는 브랜치가 우선하는 브랜치의 방향이 되도록 명령어를 작성할 수 있습니다.마찬가지로 제어 유닛은 컴파일러로부터 힌트를 얻을 수 있습니다.일부 컴퓨터에는 분기 방향에 [4]대한 컴파일러로부터의 힌트를 인코딩할 수 있는 명령이 있습니다.

일부 제어 장치는 분기 예측을 수행합니다.제어부는 브랜치 [3]명령의 주소로 부호화된 최근의 브랜치 전자 리스트를 보관 유지한다.이 목록에는 브랜치별로 가장 최근에 실행된 방향을 기억하기 위한 몇 개의 비트가 있습니다.

일부 제어 유닛은 컴퓨터가 두 개 이상의 파이프라인을 가지고 있을 수 있는 투기적 실행을 수행할 수 있으며, 지점의 양방향 계산 후 사용되지 않은 방향의 계산을 폐기할 수 있습니다.

메모리의 결과는 매우 빠른 컴퓨터가 메모리를 캐시하기 때문에 예측할 수 없는 시간에 사용할 수 있습니다.즉, 제한된 양의 메모리 데이터를 매우 빠른 메모리에 복사합니다.CPU는 캐시 메모리의 매우 빠른 속도로 처리되도록 설계되어야 합니다.따라서 CPU가 메인 메모리에 직접 액세스해야 할 때 CPU가 정지할 수 있습니다.최신 PC에서는 메인 메모리가 캐시보다 300배 느립니다.

이를 지원하기 위해 데이터가 사용 가능해지면 처리하도록 고장난 CPU와 제어 장치가 개발되었습니다.(다음 항 참조)

그러나 모든 계산이 완료되었지만 CPU가 여전히 메인 메모리를 대기하고 있는 경우에는 어떻게 해야 합니까?다음으로 제어부는 스레드가 아이돌 상태일 때 데이터를 가져온 대체 실행 스레드로 전환할 수 있다.스레드에는 자체 프로그램 카운터, 명령 스트림 및 별도의 레지스터 세트가 있습니다.설계자는 현재의 메모리 기술과 컴퓨터의 종류에 따라 스레드 수가 달라집니다.PC나 스마트폰과 같은 일반적인 컴퓨터에는 보통 몇 개의 스레드가 있는 제어 장치가 있어 저렴한 가격의 메모리 시스템으로 바쁘게 움직이기에 충분합니다.데이터베이스 컴퓨터는 훨씬 더 큰 메모리를 계속 사용하기 위해 스레드 수가 두 배 정도 되는 경우가 많습니다.그래픽 처리 장치(GPU)에는 보통 수백 또는 수천 개의 스레드가 있습니다.이는 그래픽 계산을 반복하는 수백 또는 수천 개의 실행 장치가 있기 때문입니다.

제어 유닛이 스레드를 허용하는 경우 소프트웨어는 스레드를 처리하도록 설계되어야 합니다.PC나 스마트폰과 같은 범용 CPU에서는 스레드는 통상적인 타임슬라이스 프로세스와 매우 비슷하게 되어 있습니다.operating system에서는, 그것들을 어느 정도 인식할 필요가 있는 경우가 있습니다.GPU에서 스레드 스케줄링은 보통 애플리케이션소프트웨어에서 숨길 수 없으며 전용 서브루틴 라이브러리로 제어되는 경우가 많습니다.

고장 제어 장치

컨트롤 유닛은 가능한 한 완성되도록 설계할 수 있습니다.여러 명령을 동시에 완료할 수 있는 경우 제어 유닛이 이를 준비합니다.따라서 가장 빠른 컴퓨터는 오퍼랜드 또는 명령 대상을 언제 사용할 수 있는지에 따라 다소 다른 순서로 명령을 처리할 수 있습니다.대부분의 슈퍼컴퓨터와 PC CPU는 이 방법을 사용합니다.이런 유형의 제어 유닛의 정확한 구성은 컴퓨터의 가장 느린 부분에 따라 달라집니다.

계산 실행이 가장 느릴 때, 명령은 메모리에서 "발행 단위"라고 불리는 전자 장치 조각으로 흐릅니다.발행 유닛은 오퍼랜드와 실행 유닛을 모두 사용할 수 있을 때까지 명령을 유지한다.그런 다음 명령어와 그 오퍼랜드가 실행 유닛에 "발행"됩니다.실행 유닛이 지시를 수행합니다.그런 다음 결과 데이터는 메모리 또는 레지스터에 다시 쓰기 위해 데이터 큐로 이동됩니다.컴퓨터에 실행 유닛이 여러 개 있는 경우 보통 클럭 사이클당 여러 개의 명령을 수행할 수 있습니다.

특수한 실행 유닛이 있는 것이 일반적입니다.예를 들어 부동소수점 단위는 비싸기 때문에 적당한 가격의 컴퓨터에는 부동소수점 실행 단위가 하나만 있을 수 있습니다.같은 시스템에는 여러 정수 단위가 있을 수 있습니다. 정수 단위는 비교적 저렴하고 대부분의 명령을 수행할 수 있기 때문입니다.

발행을 위한 제어유닛 중 하나는 명령이 언제 발동될 수 있는지를 검출하는 '스코어보드'[5]인 전자논리의 배열을 이용한다.어레이의 "높이"는 실행 유닛의 수이며, "길이"와 "폭"은 각각 오퍼랜드의 소스 수입니다.모든 항목이 함께 모이면 오퍼랜드와 실행 유닛의 신호가 교차합니다.이 교차로의 논리는 명령이 작동할 수 있음을 감지하므로 명령이 자유 실행 장치에 "발행"됩니다.다른 스타일의 발행 제어 유닛은 하드웨어 명령 큐를 정렬하는 토마술로 알고리즘을 구현한다.어떤 의미에서는 두 스타일 모두 큐를 사용합니다.스코어보드는 명령 큐를 인코딩하고 순서를 변경하는 대체 방법으로, 일부 설계자는 이를 큐 [6][7]테이블이라고 부릅니다.

스코어보드는 몇 가지 추가 논리를 통해 실행 순서 변경, 등록 이름 변경 및 정확한 예외와 인터럽트를 콤팩트하게 결합할 수 있습니다.게다가 Tomasulo [6][7]알고리즘에 의해서 사용되는 대량의 복잡한 컨텐츠 주소 지정 가능한 메모리 없이도, 이것을 실행할 수 있습니다.

실행이 결과 쓰기보다 느릴 경우 메모리 라이트백큐에는 항상 빈 엔트리가 있습니다.하지만 그 기억이 느리게 쓰인다면?또는 행선지 레지스터가 아직 발행되지 않은 "이전" 명령에 의해 사용되는 경우에는 어떻게 해야 합니까?그러면 명령의 라이트백 단계를 스케줄링해야 할 수 있습니다.이것을 「퇴사」라고 하는 명령도 있습니다.이 경우 실행 유닛의 백엔드에 스케줄링 로직이 있어야 합니다.결과를 [6][7]얻을 레지스터 또는 메모리에 대한 액세스를 스케줄링합니다.

폐기 로직은 발행 [6][7]로직에 메모리 또는 레지스터 액세스를 포함시킴으로써 발행 스코어보드 또는 Tomasulo 큐로 설계할 수도 있습니다.

컨트롤러가 고장나면 인터럽트를 처리하기 위해 특별한 설계 기능이 필요합니다.여러 명령이 진행 중일 경우 명령 스트림에서 인터럽트가 발생하는 위치가 명확하지 않습니다.입력 및 출력 인터럽트의 경우 거의 모든 솔루션이 작동합니다.그러나 컴퓨터에 가상 메모리가 있는 경우 메모리 액세스가 실패했음을 나타내는 인터럽트가 발생합니다.이 메모리 액세스는 정확한 명령 및 정확한 프로세서 상태와 관련되어 있어야 합니다.그러면 인터럽트에 의해 프로세서 상태가 저장되고 복원될 수 있습니다.통상의 솔루션에서는, 메모리 액세스가 [6][7]완료될 때까지, 레지스터의 카피를 보존합니다.

또한 CPU는 클럭 사이클당 여러 명령을 완료할 수 있고 일반적으로 다양한 진행 단계에서 많은 명령이 있기 때문에 분기 정지 문제가 더욱 심각합니다.따라서 이러한 제어 장치는 파이프라인 프로세서에서 [8]사용되는 모든 솔루션을 사용할 수 있습니다.

제어 유닛의 번역

일부 컴퓨터는 각 명령을 일련의 간단한 명령으로 변환합니다.고장난 컴퓨터는 복잡한 다단계 명령을 처리하면서 논리 대부분을 단순화할 수 있다는 장점이 있습니다.Pentium Pro 이후 인텔의 x86 CPU는 복잡한 CISC x86 명령을 RISC와 같은 내부 마이크로 오퍼레이션으로 변환합니다.

여기서 제어 유닛의 "전면"은 명령의 번역을 관리한다.오퍼랜드는 변환되지 않습니다.CU의 "뒷면"은 실행 유닛과 데이터 경로에 마이크로 연산과 오퍼랜드를 발행하는 잘못된 CPU입니다.

저전력 컴퓨터용 제어 장치

많은 최신 컴퓨터에는 전력 소비를 최소화하는 제어 기능이 있습니다.휴대폰과 같은 배터리 구동 컴퓨터에서는 배터리 수명이 길다는 장점이 있습니다.유틸리티 파워를 탑재한 컴퓨터에서는 전력, 냉각 또는 소음 비용을 절감하는 것이 정당화됩니다.

대부분의 최신 컴퓨터는 CMOS 로직을 사용합니다.CMOS는, 다음의 2개의 일반적인 방법으로 전력을 낭비합니다.상태 변화, 즉 "활성 전원" 및 의도하지 않은 누출에 의해.제어 신호를 끄면 컴퓨터의 활성 전력을 줄일 수 있습니다.누설전류는 전기적 압력, 전압을 낮추거나 트랜지스터를 더 큰 공핍영역으로 만들거나 로직을 완전히 끄면 감소시킬 수 있다.

로직에 저장된 데이터는 영향을 받지 않으므로 활성 전력을 줄이기가 더 쉽습니다.통상의 방법으로 CPU의 클럭환율을 낮춥니다.대부분의 컴퓨터 시스템은 이 방법을 사용합니다.클럭 변경에 따른 부작용을 피하기 위해 이행 중에 CPU가 아이돌 상태가 되는 것은 일반적입니다.

대부분의 컴퓨터에는 "halt" 명령도 있습니다.이것은 인터럽트 코드가 신뢰할 수 있는 타이밍을 갖도록 비인터럽트 코드를 정지하기 위해 개발되었습니다.그러나 설계자들은 곧 정지 명령이 CPU의 클럭을 완전히 끄기에 적절한 시기라는 것을 알게 되었고 CPU의 활성 전력을 0으로 낮춥니다.인터럽트 컨트롤러에는 클럭이 계속 필요할 수 있지만 일반적으로 CPU보다 훨씬 적은 전력을 사용합니다.

이 방법들은 비교적 쉽게 설계할 수 있고, 너무 흔해져서 다른 방법들은 상업적 이익을 위해 발명되었다.현대의 저전력 CMOS CPU의 대부분은 필요한 지시에 따라 전용 실행 유닛과 버스인터페이스를 정지 및 기동합니다.일부[9] 컴퓨터는 CPU의 마이크로 아키텍처가 전송 트리거 멀티플렉서를 사용하도록 배치하여 각 명령이 필요한 정확한 논리 부분만 사용하도록 합니다.

일반적인 방법 중 하나는 부하를 여러 CPU로 분산하고 부하가 감소하면 사용하지 않는 CPU를 끄는 것입니다.운영 체제의 작업 전환 로직은 CPU의 데이터를 메모리에 저장합니다.경우에 [10]따라서는, 1개의 CPU가, 말 그대로 논리 게이트의 수가 적어, 보다 심플하고 작아질 수 있습니다.따라서 누수가 적고, 가장 늦게 꺼지고, 가장 먼저 켜집니다.또한 특별한 저전력 기능이 필요한 유일한 CPU이기도 합니다.대부분의 PC에서도 같은 방법이 사용되고 있습니다.대부분의 PC에는 전원 시스템을 관리하는 보조 CPU가 내장되어 있습니다.다만, PC에서는, 통상, 소프트웨어는 operating system이 아닌 BIOS 에 있습니다.

이론적으로 클럭 속도가 낮은 컴퓨터도 전원 장치의 전압을 낮춤으로써 누설을 줄일 수 있습니다.이것은 컴퓨터의 신뢰성에 많은 면에서 영향을 미치기 때문에 엔지니어링 비용이 많이 들고 PC나 휴대폰과 같은 비교적 비싼 컴퓨터를 제외하고는 드문 일이다.

일부 설계에서는 누출이 매우 적은 트랜지스터를 사용할 수 있지만, 일반적으로 비용이 추가됩니다.트랜지스터의 고갈 장벽은 누출을 줄이기 위해 더 크게 만들 수 있지만, 이는 트랜지스터를 더 크게 만들고 따라서 더 느리고 더 비싸게 만듭니다.일부 공급업체는 일부 프로세스가 아날로그 회로에 제공하는 대형 트랜지스터에서 저누전 로직을 구축하여 IC의 일부 부분에서 이 기술을 사용합니다.일부 공정은 트랜지스터를 실리콘 표면 위에 "핀 페트(fin fet)"로 배치하지만, 이러한 공정은 더 많은 단계를 거치기 때문에 비용이 더 많이 듭니다.특수 트랜지스터 도핑 재료(예: 하프늄)도 누출을 줄일 수 있지만, 이 때문에 처리 단계가 추가되어 비용이 더 많이 듭니다.일부 반도체는 실리콘보다 밴드갭이 크다.그러나 이러한 재료와 공정은 현재(2020년) 실리콘보다 더 비쌉니다.

로직을 끄려면 로직 내의 데이터를 누출이 적은 스토리지로 이동해야 하기 때문에 누출 관리는 더욱 어렵습니다.

CPU에[11] 따라서는, 특수한 타입의 플립 플랍(비트를 격납하기 위해서)을 사용하고 있습니다.이 플립 플랍은 고속의 고누출 스토리지 셀과 저누출(고가의) 저누출 셀을 결합합니다.이들 2개의 셀은 전원장치를 분리했습니다.CPU가 전력 절약 모드가 되면(예를 들어 인터럽트를 기다리는 정지 때문에), 데이터는 저누출 셀로 전송되고 나머지는 꺼집니다.CPU가 로우 리크 모드를 종료하면(예를 들어 인터럽트로 인해), 프로세스는 반대로 진행됩니다.

이전 설계에서는 CPU 상태를 메모리 또는 디스크에 복사하여 특수한 소프트웨어를 사용하는 경우가 있었습니다.매우 심플한 임베디드 시스템이 재기동하는 경우가 있습니다.

컴퓨터와의 통합

현대의 모든 CPU에는 CPU를 컴퓨터의 나머지 부분에 접속하기 위한 제어 로직이 있습니다.현대 컴퓨터에서 이것은 보통 버스 컨트롤러입니다.명령이 메모리를 읽거나 쓸 때 제어 유닛은 버스를 직접 제어하거나 버스 컨트롤러를 제어합니다.현대의 많은 컴퓨터는 메모리, 입출력용으로 동일한 버스 인터페이스를 사용합니다.이것을 「메모리 매핑 I/O」라고 부릅니다.프로그래머에게 I/O 디바이스의 레지스터는 특정 메모리 주소의 숫자로 나타납니다.x86 PC는 I/O 명령에 의해 액세스되는 개별 I/O 버스인 오래된 방법을 사용합니다.

최신 CPU에는 인터럽트 컨트롤러도 포함되어 있는 경향이 있습니다.시스템 버스로부터의 인터럽트 신호를 처리합니다.컨트롤 유닛은 인터럽트에 응답하는 컴퓨터 부품입니다.

메모리를 캐시하는 캐시 컨트롤러가 있는 경우가 많습니다.캐시 컨트롤러와 관련된 캐시 메모리는 대부분의 경우 최신 고성능 CPU에서 가장 큰 물리적 부분입니다.메모리, 버스 또는 캐시를 다른 CPU와 공유할 때 제어 로직은 오래된 데이터를 취득하지 않도록 하기 위해 CPU와 통신해야 합니다.

과거의 많은 컴퓨터들은 어떤 종류의 입력과 출력을 제어 장치에 직접 내장했다.예를 들어, 과거의 많은 컴퓨터에는 제어 장치에 의해 직접 제어되는 스위치와 조명이 있는 전면 패널이 있었습니다.이를 통해 프로그래머가 직접 프로그램을 입력하고 디버깅할 수 있습니다.이후 실제 가동 컴퓨터에서는 디스크에서 운영체제를 읽기 위해 작은 부트스트랩 프로그램을 입력하는 것이 가장 일반적이었습니다.이거 짜증나.따라서 전면 패널은 읽기 전용 메모리의 부트스트랩 프로그램으로 대체되었습니다.

대부분의 PDP-8 모델에는 I/O 장치가 제어 장치의 메모리 읽기 및 쓰기 [12]논리를 빌릴 수 있도록 설계된 데이터 버스가 있었습니다.이를 통해 Disk와 같은 고속 I/O 컨트롤러의 복잡성과 비용을 줄일 수 있었습니다.

Xerox Alto는 거의 [13]모든 I/O를 실행하는 멀티태스킹 마이크로프로그래밍 컨트롤 유닛을 갖추고 있었습니다.이 디자인은 전자 로직의 극히 일부만 가지고 현대 PC의 대부분의 기능을 제공했습니다.듀얼 스레드 컴퓨터는 우선순위가 가장 낮은2개의 마이크로 스레드로 동작했습니다.이들은 I/O가 필요하지 않을 때마다 계산을 수행했습니다.비디오, 네트워크, 디스크, 정기 타이머, 마우스 및 키보드의 고우선도 마이크로 스레드 제공(우선도 감소).마이크로 프로그램은 I/O 장치의 복잡한 논리뿐만 아니라 장치를 컴퓨터와 통합하는 논리도 수행했습니다.실제 하드웨어 I/O의 경우 마이크로프로그램은 대부분의 I/O에 대해 시프트 레지스터를 읽고 씁니다. 때로는 저항 네트워크와 트랜지스터를 사용하여 출력 전압 레벨을 시프트합니다(예: 비디오용).외부 이벤트를 처리하기 위해 마이크로 컨트롤러에는 스레드 사이클의 끝(예: 명령의 끝 또는 시프트 레지스터에 액세스한 후)에 스레드를 전환하는 마이크로 인터럽트가 있었습니다.마이크로 프로그램을 다시 쓰고 다시 설치할 수 있어 연구용 컴퓨터에 매우 유용했다.

제어장치의 기능

따라서 메모리의 명령 프로그램은 명령 간에 데이터를 올바르게 조작하도록 CU가 CPU의 데이터 흐름을 구성합니다.그 결과 완전한 프로그램을 실행할 수 있고 명령 간에 하드웨어를 변경하기 위해 사람의 개입이 필요하지 않은 컴퓨터가 탄생했다(CU가 저장된 프로그래밍된 컴퓨터가 발명되기 전에 계산을 위해 펀치 카드만 사용해야 했다).

유선 연결 컨트롤 유닛

LDA 명령을 수행하는 단순 유선 제어 유닛의 제어 매트릭스 애니메이션

유선 연결 제어 장치는 조합 논리 장치를 사용하여 구현되며, 이러한 응답을 호출하는 데 사용된 명령에 따라 특정 결과를 생성할 수 있는 한정된 수의 게이트를 특징으로 합니다.유선 연결 제어 장치는 일반적으로 마이크로 프로그래밍된 [14]설계보다 빠릅니다.

이 설계에서는 고정 아키텍처를 사용합니다.명령어 세트가 변경 또는 변경된 경우 배선을 변경해야 합니다.그것은 간단하고 빠른 컴퓨터에 편리할 수 있다.

이 방법을 사용하는 컨트롤러는 고속으로 동작할 수 있지만 유연성은 거의 없습니다.복잡한 명령어 세트는 애드혹 논리 설계를 사용하는 설계자를 압도할 수 있습니다.

유선 접속 방식은 컴퓨터가 진화함에 따라 인기가 낮아지고 있습니다.지금까지 CPU용 제어 유닛은 애드혹 로직을 사용했기 때문에 [15]설계가 어려웠습니다.

마이크로 프로그램 제어 장치

마이크로프로그래밍의 개념은 1951년 Maurice Wilkes에 의해 컴퓨터 프로그램 명령을 실행하기 위한 중간 수준으로 도입되었습니다.마이크로 프로그램은 일련의 마이크로 명령으로 구성되어 특수 제어 메모리에 저장되었습니다.유선 연결된 컨트롤 유닛과 달리 마이크로 프로그램 컨트롤 유닛의 알고리즘은 일반적으로 흐름도 [16]설명으로 지정됩니다.마이크로프로그래밍된 제어 유닛의 주요 장점은 구조가 단순하다는 것입니다.컨트롤러로부터의 출력은 마이크로 명령에 의한 것입니다.마이크로프로그램은 [17]소프트웨어처럼 디버깅하여 교체할 수 있습니다.

조합 설계 방법

마이크로코드의 일반적인 변형은 소프트웨어 시뮬레이터를 사용하여 마이크로코드를 디버깅하는 것입니다.다음으로 마이크로코드는 비트테이블입니다이것은 마이크로코드 주소를 컨트롤 유닛 출력으로 변환하는 논리 진실 테이블입니다.이 진실 표는 최적화된 전자 로직을 생성하는 컴퓨터 프로그램에 공급될 수 있습니다.그 결과 발생하는 제어 유닛은 마이크로프로그래밍만큼 설계하기 쉽지만 유선 제어 유닛의 빠른 속도와 적은 수의 로직 요소를 갖추고 있습니다.실제 결과는 Maley 기계 또는 Richards 컨트롤러와 유사합니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ von Neumann, John (1945), First Draft of a Report on the EDVAC (PDF), Moore School of Electrical Engineering, University of Pennsylvania, archived from the original (PDF) on March 14, 2013
  2. ^ Astha Singh. "Computer Organization - Control Unit and design". GeeksforGeeks. Retrieved 25 May 2019.
  3. ^ a b Asanovic, Krste (2017). The RISC V Instruction Set Manual (PDF) (2.2 ed.). Berkeley: RISC-V Foundation.
  4. ^ Power ISA(tm) (3.0B ed.). Austin: IBM. 2017. Retrieved 26 December 2019.
  5. ^ Thornton, J.E. (1970). Design of a Computer: The CDC 6600. Atlanta: Scott, Foreman and Co. p. 125.
  6. ^ a b c d e Leighton, Luke. "Libre RISC-V M-Class". Crowd Supply. Retrieved 16 January 2020.
  7. ^ a b c d e Alsup, Mitch; Leighton, Luke; Zaruba, Florian; Thornton, James; Kimmitt, Jonathon; Petrisko, Dan; Takano, S.; Falvo, Samuel. "RISC-V HW Dev, 6600-style out-of-order scoreboard". Google Groups. RISC-V Foundation. Retrieved 16 January 2020.
  8. ^ Celio, Chris. "BOOM Docs, Rocketship SOC Generator". Retrieved 16 January 2020.
  9. ^ Introduction to MAXQ Architecture. Dallas: Maxim Integrated Inc. Retrieved 26 December 2019.
  10. ^ ARM Technical Reference, Cortex (v8 ed.). ARM Ltd.
  11. ^ The ARM(tm) Technical Reference Manual (v6, r0 ed.). Cambridge: ARM Ltd.
  12. ^ PDP-8L Maintenance Manual (PDF). Maynard Mass.: Digital Equipment Corp. 1970. Retrieved 26 December 2019.
  13. ^ Alto Hardware Manual (PDF). Xerox. 1976.
  14. ^ "MICRO-PROGRAMMED VERSUS HARDWIRED CONTROL UNITS;". www.cs.binghamton.edu. Archived from the original on 2017-04-30. Retrieved 2017-02-17.
  15. ^ Williams, R. D.; Klenke, R. H.; Aylor, J. H. (May 2003). "Teaching computer design using virtual prototyping". IEEE Transactions on Education. 46 (2): 296–301. doi:10.1109/te.2002.808278. ISSN 0018-9359.
  16. ^ Barkalov, Alexander (2009). Logic synthesis for FSM based control units / Alexander Barkalov and Larysa Titarenko. Berlin: Springer. ISBN 978-3-642-04308-6.
  17. ^ Wiśniewski, Remigiusz (2009). Synthesis of compositional microprogram control units for programmable devices. Zielona Góra: University of Zielona Góra. p. 153. ISBN 978-83-7481-293-1.