FPGA CPU, 최대 속도를 찾는 방법?


14

나는 단지 FPGA에 들어가고 있고 올바르게 이해하면 코드를 사용하여 논리 게이트를 함께 연결하고 있습니다. Verilog에서 CPU를 설계하면 일부 로직 게이트를 연결하고 작동해야하지만 DIY CPU가 얼마나 빨리 실행될 수 있는지 어떻게 알 수 있습니까? 무엇에 의존합니까?


12
@KingDuken 나는 당신이 염두에두고있는 CPU와 같은 것을 디자인하기 위해 Verilog의 대안에 대해 궁금합니다 (VHDL이 아닌 것으로 추정 :))?
유진 Sh.

1
@KingDuken 그것은 내가 가진 문제가 아닙니다. 이미 CPU를 만들었고 브레드 보드에 아키텍처를 만들어 FPGA로 포팅하려고합니다. 내 질문은 내 CPU의 최대 주파수 클럭이 어떻게 계산되는지, 어떻게 제한합니까?

4
구글 "정적 타이밍 분석"
Photon

14
@KingDuken 두 개의 CPU를 디자인 한 사람은 그렇게 오래 걸리지 않습니다. 자신이하는 일을 알고 있다면 1-2 개월 안에 프로세서를 사용할 수 있습니다.
user110971

2
@KingDuken 재미있는 사실 : Sun / Oracle은 Verilog 소스 코드를 UltraSPARC T1 및 T2 프로세서에 릴리스했습니다. 나는 몇 사람을 직접 보았고 모두 일했습니다. 참고로, 그들은 심지어 SPECint_rate2006을 얻기 위해 갔다! : D Verilog 또는 다른 HDL에서 CPU를 설계하는 것이 얼마나 불가능한지를 분명히 보여줍니다. 나는 취미로 몇 번이나 나 자신을 그렇게 해왔으며, 그것은 불가능한 것이 아닙니다. (한번에 항상 그랬듯이)
Richard the Spacecat

답변:


29

디자인의 속도는 여러 가지로 제한됩니다. 가장 큰 것은 설계에서 조합 경로 (Critical Path) 라고하는 조합 논리를 통한 전파 지연 일 가능성이 높습니다 . 빠른 FPGA를 사용하고 HDL을 매우 신중하게 작성하는 경우 Virtex Ultrascale +와 같은 것으로 700MHz에 도달 할 수 있습니다. Spartan 6과 같은 저가형 FPGA에서 합리적인 수치는 아마도 250MHz와 비슷할 것입니다. 이를 위해서는 어디에서나 파이프 라이닝이 필요하므로 상태 저장 구성 요소 (논리 수준 최소화), 낮은 팬 아웃 (논리 요소로드 최소화) 및 혼잡 한 쥐가없는 (효율적인 라우팅 경로) 사이에 최소한의 조합 논리가 있어야합니다.

다른 FPGA의 패브릭 로직은 다른 타이밍 파라미터를 갖습니다. 더 빠르고 비싼 FPGA는 더 작은 지연을 가지므로 동일한 설계로 더 높은 클록 주파수를 달성하거나 동일한 주파수에서 더 적은 파이프 라인으로 더 복잡한 설계 또는 설계를 실행할 수 있습니다. 특정 프로세스 내에서의 성능은 비슷할 수 있습니다. 예를 들어 Kintex Ultrascale 및 Virtex Ultrascale은 동일한 프로세스에서 만들어지며 유사한 셀 및 라우팅 지연이 있습니다. 주어진 설계가 툴 체인을 통해 실행되고 정적 타이밍 분석에서 타이밍 보고서를 보지 않으면 주어진 설계가 얼마나 빠를 지 말하기는 불가능합니다.

최대 클럭 속도를 결정하기 위해 툴체인 실행을 수행 할 때는 툴이 타이밍 중심이라는 점을 명심하십시오. 지정된 타이밍 제약 조건을 충족 시키려고합니다. 타이밍 제약 조건을 지정하지 않으면 도구가 속도에 맞게 설계를 최적화하지 않으므로 결과가 매우 나빠질 수 있습니다. 일반적으로 툴은 최대 클럭 주파수를 확인하기 위해 클럭주기 제약 조건이 다른 여러 번 실행해야합니다.

임계 경로가 한계가되지 않도록 설계를 최적화 할 수 있다면 클록 생성 및 분배 (PLL, DCM, 클록 버퍼 및 글로벌 클록 네트)의 한계에 도달하게됩니다. 이러한 한계는 부품 데이터 시트에서 확인할 수 있지만 사소한 디자인으로 접근하기는 어렵습니다. 500MHz의 Virtex Ultrascale에서 작동했지만 다른 구성 요소에 트리거 신호를 제공하는 소수의 카운터였습니다.


22

타겟 기술 (특정 FPGA)에서 설계를 합성하고 정적 타이밍 분석 툴이 최소 클럭주기를 알려줍니다.

또는 처음에 디자인에 구속 조건을 추가하면 도구가 설계의 충족 여부를 알려줍니다.


제약 조건이 충족되지 않는 원인은 무엇입니까? 클록 기간을 제한하는 것은 무엇입니까? 내가 사용하는 FPGA에 의존 하는가 아니면 전체 FPGA 제품군에 대해 동일합니까? (또는 모든 존재하는 FPGA에 대해?)

3
그것은 FPGA의 속도와 디자인에서 FF 사이에 얼마나 많은 조합 논리를 두는가에 달려 있습니다.
Dave Tweed

9
@ appmaker1358, FPGA에 대한 데이터 시트를 읽으려고 했습니까? 속도 등급은 데이터 시트에서 가장 중요한 파라미터 중 하나입니다.
광자

2
속도는 가장 긴 타이밍 경로에 의해 제한되며, 이는 두 개의 상태 저장 요소 (플립 플롭, RAM 등) 사이의 논리 및 라우팅을 통한 가장 긴 전파 지연입니다. 다른 FPGA는 다른 타이밍 파라미터를 가지므로 디자인은 다른 FPGA에서 다른 속도를 달성합니다. 클럭 분배 컴포넌트와 PLL에는 일반적으로 한계가 있지만 FPGA의 일부 부분에는 한계가 있지만 사소하지 않은 설계에 가까운 HDL을 작성하는 것은 어렵습니다.
alex.forencich

3
또한 타이밍 제약 조건을 항상 추가해야합니다. 배치 및 라우팅은 구속 조건을 고려하고이를 충족 시키려고 노력합니다. 제약 조건을 추가하지 않으면 도구가 크게 노력하지 않으며 매우 낙관적 인 숫자를 얻지 못합니다.
alex.forencich

13

CPU가 실행되는 속도는 합성 설계에서 가장 긴 플롭-플-플-플-플-플롭 지연에 기반합니다. 플롭 투 플롭 지연에는 클럭 -Q, 라우팅, 로직 / LUT 및 플롭 설정 시간이 포함됩니다. 이것들은 함께 타이밍 의 중요한 경로 를 형성하며 , 배치 및 경로 지정 도구의 타이밍 보고서 출력에서 ​​검사 할 수 있습니다.

파이프 라인, 병렬 실행, 추론 실행 등 주어진 프로세스를 최대한 활용하기 위해이 지연을 최소화하는 아키텍처를 만드는 데 전념하는 전체 설계 분야가 있습니다. FPGA (또는 그 문제에 대해서는 ASIC)에서 성능의 마지막 온스를 짜는 것은 매혹적인 작업입니다.

즉, FPGA 벤더는 최대 MHz 속도에 해당하는 부품에 대해 서로 다른 속도 등급을 제공 할 것입니다. 예를 들어, -2 Xilinx Artix는 파이프 라인이 매우 높은 설계에서 더 높은 클럭 속도를 제공 할 수 있지만 '250MHz'부품입니다.

FPGA 합성 및 배치 및 경로 지정 도구와 상호 작용할 때 설계에 제약 을 주어야 합니다. 이를 통해 달성하려는 목표 플롭-플롭 간 지연 시간을 도구 흐름에 알립니다. Quartus (Altera) 및 Vivado (Xilinx)에서 이러한 제약 조건은 Synopsys Design Constraints를 나타내는 SDC라는 구문을 사용합니다. SDC는 처음에 ASIC 세계에서 왔으며 FPGA 산업에서도 채택되었습니다. SDC에 대해 알아보십시오. 원하는 결과를 얻는 데 도움이됩니다.

Altera와 Xilinx는 SDC 구문 및 기타 여러 주제를 사용하는 방법에 대한 온라인 커뮤니티를 보유하고 있습니다.

즉, 속도에 관심이 있다면 Zynq와 같은 CPU 하드 매크로가있는 FPGA를 고려해야합니다.


-2

CPU는 글로벌 클럭보다 빠르게 실행되지 않으므로 실행 속도에 대한 상한이 설정됩니다. 일반적으로 최대 클럭 속도에 대한 정보는 FGPA 데이터 시트에 나와 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.