무엇을 하든지, 셀룰러 오토 마톤의 다음 상태를 계산하려면 오토 마톤에 셀이있는 것보다 많은 계산이 필요합니다. 따라서 일정한 시간을 얻으려면 셀 수만큼 많은 컴퓨팅 코어가 필요합니다.
GPU에서 이들의 수는 현재 최대 수천입니다. 다음 상태의 계산은 너무 간단하여 결과가 IO 바운드 될 것으로 기대합니다. 즉, 데이터 이동이 필요합니다 (근사치가 좋지 않으면 구현에 비 효율성이 있거나 아키텍처가 적합하지 않지만 매우 놀라운 것입니다).
FPGA의 경우 문제는 더 어려우며 사용 가능한 메모리와 계산 단위의 혼합에 따라 달라질 수 있습니다. 너무 멀지 않은 경우 모든 장치를 바쁘게 유지할 메모리가 충분하지 않으며 외부 메모리에 의존하는 경우 GPU와 같은 자리에 있고 메모리 대역폭이 제한 요소가되며 그렇지 않습니다. GPU보다 이점이 없다는 결론에 놀라십시오. (저는 FPGA로 작업했지만 몇 년 전에는 올바른 혼합을 갖춘 FPGA 모델이있을 수 있습니다).
ASIC은 더 많은 유연성을 제공합니다. 당신은 쉽게 같은 수축기 같은 구현을 가질 수 있습니다 (그러나 양방향 데이터 흐름, 일부 수축기는 일반적으로 단방향 데이터 흐름으로 제한됩니다), 각 물리적 셀은 하나의 논리적 인 것입니다 : 메모리의 비트와 다음 상태를 계산하는 데 필요한 논리는 다음 상태로 배치됩니다 물리적 인 이웃이되도록 논리적입니다. 당신은 분명히 일정한 시간 영역에 있습니다. 어떤 하드 매크로가 있는지에 따라 약간 덜 명확하고 여러 개의 논리적 인 매크로를 다시 그룹화하는 물리적 셀을 갖는 것이 좋습니다. 목표는 한 칩에서 수행되는 작업을 최대화하는 것, 즉 통신 요구가 셀 수에 비례하자마자 칩 외부와의 통신을 최소화하는 것이므로 대역폭이 제한됩니다. 예, 즉, 각 단계의 모든 셀을 봐야하는 경우, GPU보다 훨씬 나을 수도 있습니다. (풀 커스텀은 더 나은 통합, 즉 칩당 더 많은 셀을 제공 할 것입니다).
요약 :-모든 중간 상태를보고 싶다면 GPU가 가장 효과적인 접근 방법입니다. 그렇지 않으면 ASIC을 더 나은 것으로 정당화하기 위해 볼륨이 필요합니다. 아마도 FPGA는 충분한 이점을 제공하지 않을 것입니다 가지고있다.