아시다시피, 클럭은 모든 논리 연산을 제어하지만 게이트는 구성 요소에 따라 클럭이 낮음에서 높음 또는 높음에서 낮음으로 변경되기를 기다려야하기 때문에 컴퓨터의 속도를 제한합니다. 클록이 통합되지 않은 경우 게이트는 명령을 내릴 때마다 가능한 빨리 변경되므로 왜 컴퓨터 속도가 증가하지 않고 클록이 사용됩니까?
아시다시피, 클럭은 모든 논리 연산을 제어하지만 게이트는 구성 요소에 따라 클럭이 낮음에서 높음 또는 높음에서 낮음으로 변경되기를 기다려야하기 때문에 컴퓨터의 속도를 제한합니다. 클록이 통합되지 않은 경우 게이트는 명령을 내릴 때마다 가능한 빨리 변경되므로 왜 컴퓨터 속도가 증가하지 않고 클록이 사용됩니까?
답변:
클록은 대부분의 회로 가 동기식 순차 로직 이 아니라는 단순한 이유로 컴퓨터에서 사용됩니다 .
동기 회로에서 클록이라고하는 전자 발진기는 회로의 모든 메모리 요소에 분배되는 클록 신호라고하는 반복적 인 펄스 시퀀스를 생성합니다.
이제는 만족스럽지 않고 당연한 것처럼 보일 수 있습니다. "컴퓨터에서 동기 회로가 사용되는 이유는 무엇입니까?" 그러나 그것은 대답 하기 쉬운 질문 이기도합니다.
동기식 로직의 주요 장점은 단순성입니다. 데이터에 대한 연산을 수행하는 로직 게이트는 입력 변경에 응답하기 위해 유한 한 시간이 필요합니다. 이것을 전파 지연이라고합니다. 클럭 펄스 사이의 간격은 다음 클럭 펄스가 발생하기 전에 모든 로직 게이트가 변경에 응답하고 출력이 안정적인 로직 값에 "고정"할 수 있도록 충분히 길어야합니다. 이 조건이 충족되는 한 (특정 다른 세부 사항은 무시) 회로는 안정적이고 신뢰할 수 있습니다. 동기 회로의 최대 작동 속도를 결정합니다.
활발한 연구 분야 는 대부분의 회로가 비동기 순차 논리 인 비동기 컴퓨팅 이다.
계산을 위해 메모리에서 ALU로 8 비트 정수가 전송되고 메모리 회로가 ALU에서 요구하기 전에 약간 다른 시간에 8 개의 데이터 라인에 신호를 제공한다고 가정 해보십시오.
여기에서 클럭을 사용하면 8 개의 데이터 라인이 한 클럭 사이클 동안 표현되는 정수에 대해 올바른 값을 유지하고 ALU가 동일한 클럭 사이클 내에서 해당 데이터를 "수집"할 수 있습니다.
나는 그것이 아마도 최고의 설명이 아니라는 것을 알고 있습니다. 본질적으로 데이터 일관성을 보장하는 시계가 없다면 속도의 증가가 가치를 높이는 것보다 훨씬 어려울 것입니다. 많은 경쟁 조건 문제가 발생할 수 있습니다.
산술 논리 장치와 같은 회로는 몇 개의 숫자를 입력으로 사용하고 숫자를 출력으로 생성합니다. 일정 시간 내에 출력의 모든 비트가 올바른 최종 상태에 도달했음을 보장 할 수 있지만 출력 비트가 유효하게되는 실제 시간은 다양한 요인에 따라 상당히 달라질 수 있습니다.
"유효한"입력과 "유효한"출력으로 ALU를 구성 할 수 있으며 "유효한"입력이 계산을 수행하기 전에 충분한 시간 동안 낮 으면 데이터 입력에 "유효한"입력이 높아지기 전에 원하는 값이 나오면, "유효한"출력은 출력 비트가 실제로 정확해질 때까지 높아지지 않습니다. 이러한 설계는 아마도 기존의 ALU보다 약 2 배 더 많은 회로를 필요로 할 것이다 [기본적으로 각 비트가 "알려진"인지 또는 "알려진"인지를 추적해야 할 것이다; "유효한"출력은 모든 출력 비트의 상태가 알려지면 참이됩니다].
설상가상으로, 더 빨리 작동 할 수있는 CPU 부분을 허용하면 느린 부분이 캐치 업을하기 위해 항상 기다리지 않는 경우에만 도움이됩니다. 그렇게하려면 주어진 시점에 기계의 어느 부분이 "앞에"있는지를 결정하고 그에 따라 행동 과정을 선택하는 논리가 있어야합니다. 불행히도, 그러한 종류의 결정은 전자 기기가 신뢰성있게 만드는 가장 어려운 결정 중 하나입니다. 두 사건 중 어떤 사건이 먼저 발생했는지 확실하게 결정하는 것은 일반적으로 "가까운 전화"가 없을 것임을 보장 할 수있는 경우에만 쉽다. 메모리 시퀀서가 처리 장치 # 1의 요청을 처리하고 장치 # 1에 그 이후에 보류중인 다른 요청이 있다고 가정합니다. # 1의 첫 번째 요청이 완료되기 전에 유닛 # 2가 요청을 제출하면 메모리 유닛이이를 처리해야합니다. 그렇지 않으면 유닛 # 1의 다음 요청을 처리해야합니다. 그것은 합리적인 디자인처럼 보이지만 놀랍게도 문제가됩니다. 문제는 그 순간 이전에 수신 된 요청이 즉시 처리되고 그 이후에 수신 된 요청이 대기해야하는 시간이있는 경우 요청이 마감 시간을 초과했는지 여부를 판별하는 데 필요한 시간은 요청이 접수 된 시간과 마감일 사이의 차이에 대략 반비례합니다. 메모리 유닛이 # 2로부터의 요청이 1 femptosecond만큼 데드 라인을 이겼 음을 결정하는 데 필요한 시간은 유닛 # 1으로부터의 제 2 요청을 서비스하는 데 필요한 시간을 실질적으로 초과 할 수 있지만, 유닛은 서비스 할 수 없다 어떤 서비스를 먼저 처리할지 결정할 때까지 요청을 수행하십시오.
모든 것이 공통 클록에서 벗어나게되면 회로의 계산 결과가 유효한 시점을 결정하지 않아도되며 타이밍 "클로즈 콜"을 제거 할 수 있습니다. 시스템의 모든 것이 100Mhz 클럭에서 벗어나는 경우 클럭 에지 이후 1ns까지 클럭에 대한 신호 변화가 없으며 클럭 에지에 대한 응답으로 발생하는 모든 것이 7ns 이내에 발생합니다. 특정 클럭 에지는 최소 3ns 이상 "승리"되며, 클럭 에지 이후까지 발생하지 않는 모든 것은 최소 1ns만큼 "손실"됩니다. "클로즈"가 아닌 것으로 보장 될 때 클럭 전후에 신호가 발생하는지 여부를 결정하는 것은 두 개의 임의 타이밍 신호 중 어느 것이 먼저 발생 하는지를 결정하는 것보다 훨씬 쉽습니다.
디지털 시스템은 동기식 이거나 비동기식 일 수 있습니다 . 비동기 시스템에서는 출력을 변경 하기 위해 클럭 에 의존하는 동기 시스템과는 달리 주어진 순간에 출력이 변경 될 수 있습니다 .
대부분의 디지털 시스템은 동기식입니다 (일부 비동기식 부품이 있더라도) 프로젝트와 결함 분석은 클록으로 만 변경 될 수 있기 때문에 더 쉽게 결함 분석을 수행 할 수 있기 때문입니다.
나는 이것을 거의 복사했다. Digital Systems: Principles and Applications, 10th edition by R. J. Tocci et al.
동기 시스템을 설계하는 경우 목표 클록 속도가 있으며 한 클록주기 내에서주기 동안 모든 계산을 완료하도록 논리를 설계합니다. 또한 낮은 전원 공급 장치 전압, 고온 및 "느린"칩과 같은 다양한 조건을 허용하려면 안전 여유를 통합해야합니다. 동기식 칩은 이러한 모든 불리한 조건에서 가장 긴 로직 경로 (가장 느린 계산)가 제 시간에 완료되도록 설계되었습니다. 결과적으로 조건이 끔찍하지 않으면 로직의 작동이 완료되고 다음 클럭이 결과를 래치하는 시점 사이에 시간 / 여백이 훨씬 길어집니다. 클럭 주파수를 변경할 수 없기 때문에이 속도를 잃게됩니다.
가 있습니다 I는 NULL 규칙 로직을 잘 알고 있음을 예를 하나 존재 비동기 로직 패러다임은 완전히. 광범위한 스트로크를 사용하여 발생하는 상황을 설명하는 논리 회로는 계산이 완료된 시점을 식별하고 자체 "클럭"신호를 효과적으로 생성 할 수 있습니다. 이를 통해 회로를 최대한 빠르게 작동시킬 수 있으며, 약간의 전력 및 EMI 이점이 있습니다. 불행히도, 설계 밀도 및 최고 성능 측면에서 비동기 특성에 대한 패널티를 지불합니다. 또한 동기 설계 및 검증을위한 소프트웨어 툴은 성숙하지만 비동기 설계를위한 많은 설계 및 검증은 여전히 수작업이므로 비동기 설계를 설계하고 구축하는 데 더 많은 노력이 필요합니다.
또한 특정 응용 프로그램이 시간 참조가되기 위해 시계 가 필요할 때도 완전히 무시합니다 . 예를 들어 사운드 카드가 특정 정확한 샘플 속도로 ADC 또는 DAC를 업데이트해야하므로 오디오가 비동기 적으로 작동하지 않거나 오디오가 왜곡 될 수 있습니다.
클록이 통합되지 않은 경우 게이트는 명령을 내릴 때마다 가능한 빨리 변경되므로 왜 컴퓨터 속도가 증가하지 않고 클록이 사용됩니까?
간단히 말해서 : 인간은 초 지능적인 존재가 아니기 때문에 수십억 개의 회로를 설계 할 수있는 지름길을 가져야합니다.
기계의 대주주가 올라가면 시계를 제거하고 공정 변동에도 불구하고 클럭리스 회로를 제조 할 수있는 것처럼 끔찍한 시간을 극복하고 일부 속도 향상을 활용할 수 있습니다.
비트 확장 : 이산적이고 예측 가능한 것은 합리적으로 분석하고 디자인하기가 더 쉽습니다. 큰 추가 혜택으로, 그들은 스스로 수정합니다 (이 경우 타이밍 자체 수정). 이것이 우리가 처음에 디지털 로직을 사용하는 이유입니다. 유사하게, 프로그래밍에서, 우리는 종종 goto-spaghetti 대신에 부동 소수점 대신 친숙한 제어 구조를 사용하고, 어떤 일이 일어날 지 확신 할 수없는 매우 "유연한"언어 대신 몇 가지 명확한 규칙을 가진 언어를 사용합니다. 코드가 실행될 때까지)