소개 컴퓨터 아키텍처에서 TTL보다 FPGA를 사용하면 어떤 이점이 있습니까?


24

나는 교양 대학에서 유일하고 유일한 컴퓨터 아키텍처 과정을 가르칩니다. 이 과정은 컴퓨터 과학 전공 및 부전공에 필요합니다. 우리는 컴퓨터 공학, 전기 공학, 기타 하드웨어 과정 등을 가지고 있지 않습니다.이 과정의 주요 목표는 학생들이 컴퓨터가 작동하는 방식을 게이트 수준까지 이해하는 것입니다. 교과서뿐만 아니라 ( 컴퓨터 구성 및 디자인)헤네시와 패터슨에 의해). 두 번째 목표는 컴퓨터 아키텍처에 대한 흥미를 유발하고 컴퓨터 과학에 대한 흥미를 높이는 것입니다. 더 많은 컴퓨터 아키텍처를 연구하도록 동기를 부여하지만 산업을 위해 직접 준비하는 것은 목표가 아닙니다. 학생들은 일반적으로 무언가를 구축하거나 대학 수준의 실험실 과정을 수강 한 경험이 없습니다. 일반적으로 10-15 명의 학생들이 한 학기당 코스를 수강합니다.

나는 1980 년대 후반 MIT에서 컴퓨터 아키텍처와 디지털 전자 공학을 배운 방식과 유사한 방식으로 1998 년부터이 과정을 가르치고 있습니다. 첫 번째 하드웨어 실습 과제에서 학생들은 완전한 가산기를 구축합니다. 학기 중간 쯤이면 8 비트 명령어 세트로 간단한 컴퓨터를 만들기 시작합니다. 배선을 줄이기 위해 일부 전자 장치 (2 비트 플립 플롭 2 개, 4 비트 LS 181 ALU 2 개를 8 비트 ALU 및 3 상태 버퍼로 연결)와 함께 제공합니다. 이 랩의 첫 번째 실습에서는 두 가지 명령 형식에 대한 (매우 간단한) 제어 신호를 도출하고 회로를 구축하여 스위치에 대한 명령을 입력하고 조명의 결과를 읽습니다. 두 번째 실습에서는 프로그램 카운터 (2 LS163)와 EPROM (내 원래의 질문 은 인트로 아키텍처를 가르쳐야하는 방법으로 전환하기 전에였습니다.) 마지막 실습에서는 조건부 분기 명령을 추가합니다. 학생들은 배선과 디버깅에 상당한 시간을 소비하지만, 많은 학습이 이루어지는 곳이며 학생들은 진정한 성취감을 느낍니다.

하지만이 포럼의 사람들은 이전에는 다루지 않았던 FPGA로 전환해야한다고 말했습니다. 저는 컴퓨터 엔지니어가 아닌 소프트웨어 엔지니어이며 현재 한동안 학교를 다니지 못했지만 학습 할 수 있습니다. 나는 많은 돈을 (얻을 수 없을 것 어쩌면 기존의 디지털 트레이너를 교체하기위한 몇 천 달러). 단일 로직 분석기가 있습니다.

저의 목표와 제약을 감안할 때, EE는 현재 FPGA에 기반한 스위치 접근 방식을 고수 할 것을 권장합니까? 후자라면, 나 자신을 교육하는 데 필요한 자료에 대한 조언을 해 줄 수 있습니까?

요청한대로, 강의 계획서 및 실습 과제 링크가 있습니다.

추가 : 예, 디지털 논리 과정이기도합니다. 대학에 도착했을 때 학생들은 각 컴퓨터 아키텍처와 디지털 논리를 한 학기 씩 이수해야했고이를 한 학기로 통합했습니다. 물론 그것은 미래가 아니라 과거에 대한 진술입니다.


커리큘럼 / 강의 계획서를 게시하거나 연결할 수 있습니까?
케빈 베르메르

대체 접근법을 고려해 볼 수 있습니까? 실험실에서 Arduinos와 같은 마이크로 컨트롤러를 사용하는 것은 어떻습니까?
JonnyBoats

7
@JonnyBoats : ... 어떻게 맞을까요? 그녀는 하드웨어 게이트로 컴퓨터를 만드는 것에 대해 이야기하고 있습니다.
darron December

귀하의 질문에 대답하기 위해-사실상 아무도 하드웨어 게이트를 구축하지 않으며, 이미 구현 된 게이트가있는 칩을 구매합니다. FPGA를 사용하면 하드웨어에서 게이트를 만들지 않고 소프트웨어에서 게이트를 설정합니다.
JonnyBoats

1
@JonnyBoats : FPGA는 하드웨어 게이트 (프로그래밍 가능한 게이트 인 LUT)에서 디지털 디자인을 구성하고 있습니다. 게이트는 하드웨어로 존재하며 설계는 완전히 물리적 인 방식으로 작동합니다. TTL을 사용하면 표준에 따라 "빌딩을 구축"하는 것이 아니라 사전 구축 된 게이트입니다. 유일한 차이점은 게이트 기능은 프로그래밍 가능하고, 라우팅은 프로그래밍 가능하지만 (물리적이지만) 수십 배 더 많습니다. 나는 여전히 Arduino가 디지털 로직 설계 과정에 어떻게 적합한 지 알지 못합니다. (당신이 그녀가 코스 자체의 목적을 바꾸려고 의도하지 않았다면?)
darron

답변:


16

수업의 목표를 감안할 때 저는 TTL 접근 방식이 훌륭하다고 생각하며 이것을 "FPGA 사람"이라고 말합니다. FPGA는 논리의 바다이며 모든 종류의 재미있는 작업을 수행 할 수 있지만 한 학기에는 인간이 할 수있는 일이 너무 많습니다.

강의 계획서를 보면, 학급은 내가 설계 한 논리 설계와 "기계 구조"과정을 혼합 한 것입니다. (또한 CS 전공을위한 것입니다. CS 전공이 실제 하드웨어에 직면해야합니다. 코드 작성을 피하는 것이 한 걸음 물러나는 것처럼 보입니다.)이 입문 단계에서는 조립 지침을 살펴 봅니다. 학생들이 코드를 사용하여 직접 작업하는 것보다 실질적인 이점은 없습니다. HDL을하는 것은 HDL을 배우고, 합성 가능한 HDL 을 작성하는 방법을 배우고, IDE를 배우는 것을 의미합니다. 이것은 훨씬 더 복잡한 개념과 재 추상입니다. 또한 소프트웨어 문제를 처리해야합니다.

일반적으로 FPGA를 사용하는 과정은 주변 장치, 직렬 통신, RAM, 비디오 생성기 등과 대화하는 데 유용한 논리를 만드는 연습을하는 것입니다. 과정의 범위. 컴퓨터 아키텍처의 고급 수업을 통해 학생들은 FPGA에서 정교한 CPU를 구현할 수 있습니다. 그러나 다시 말하지만 이것은 과정의 범위를 벗어난 것으로 보입니다.

나는 적어도 FPGA에 강의를 할 것입니다. 개발 보드와 함께 몇 가지 데모를 통해 워크 플로우를 보여줍니다. 당신은 밀스에 있기 때문에 아마도 CS 150 / 152 를 운영하는 버클리 사람들에게 연락 할 수있을 것입니다 가 일을 어떻게보고 이동합니다.


90 년대 초 CS150은 기본적으로 OP가 MIT에서 자신의 코스워크를 설명하는 방식 (대부분 74xx 게이트)으로 8 비트 (또는 4 비트?) 간단한 CPU를 구성하는 방법을 배웠다고 말할 수 있습니다. 우리는 HDL없이 회로도 캡처 도구로 설계된 FPGA를 사용하여 간단한 프로젝트를 진행했습니다. 현재 강의 계획서가 대부분 HDL 기반 인 것 같습니다.
광자

이 클래스는 논리 설계와 기계 구조가 혼합되어 있다는 것이 좋습니다. 질문 설명에 추가 할 때 두 개의 개별 코스가 있었는데, 하나의 코스로 결합되었습니다. 도와 주셔서 감사합니다. FPGA를 연구하고 최소한 강의를 추가 할 것입니다. UCB에서 Dave Patterson은 훨씬 높은 수준의 인트로 아키텍처에 대한 새로운 접근 방식을 만들었습니다. 나는 그것에 주목하고 있지만 큰 변화를 만들 계획은 없습니다.
Ellen Spertus

FPGA 환경의 복잡성을 고려하고 있었으며 입문 과정에 너무 많을 수도 있다는 의견에 동의하지 않습니다. 현대의 워크 플로로 가르치지 않는 것은 부끄러운 일처럼 보입니다. 나는 TTL과 함께 놀았으며, FPGA에 들어가기 전까지는 (상대적으로 간단한) 컴퓨터의 작동 방식을 실제로 이해하기 시작했습니다. 교과 과정은 내가 작업했던 것보다 좋아 보이므로 아마도 개념을 더 잘 이해할 수 있습니다. 그러나 TTL 로직 칩의 관점에서 볼 때 "실제"프로세서는 멀리 떨어져 있습니다. FPGA 후에는 FPGA를 만들 수 있습니다.
darron

"컴퓨터 작동 방식"이란 퍼지 "시계 및 플롭"개념이 아니라 실제로 컴퓨터를 구축하는 방법을 의미합니다. 물론 TTL로는 충분합니다. (그리고 다시, 그녀의 교과 과정은 이것을 잘 가르 칠 수있는 것처럼 보입니다 ... 내 문제는 실제로 사용되는 하드웨어를 가르치는 대신에 실제 응용 프로그램이 거의없는 하드웨어에 대한 개념을 가르치는 것입니다)
darron

@darron, TTL은 기본적으로 더 이상 사용되지 않지만 개념적으로는 깨끗합니다. 복잡한 것은 언어 나 IDE가 없으며 다이어그램과 지점 간 배선 만 있습니다. 단어 크기가 커지면 지저분하지만 8 비트는 나쁘지 않습니다. 클래스가 더 나아 갔거나 후속 클래스가 있다면 FPGA는 의미가 있지만, 다루는 자료를 고려할 때 불필요한 합병증이라고 생각합니다.
mng

6

나는 Photon에 동의합니다. FPGA를 사용하면 많은 장점이 있습니다. 고려해야 할 몇 가지 흥미로운 사항은 다음과 같습니다.

1) 몇 시간 또는 며칠 동안 작업 배선 작업을하지 않고도 게이트 설계를 매우 신속하게 시도 할 수있는 간편한 플랫폼 FPGA는 잠재적으로 매우 복잡한 디지털 디자인을 매우 쉽게 허용합니다. (더 많은 이론, 덜 바쁘다)

2) 학생의 작업 중 상당 부분은 실험실 외부의 시뮬레이션에서 수행 될 수 있습니다.

3) 소프트웨어 환경이 무료입니다 (일반적으로 시뮬레이터 포함).

4) 비교적 저렴한 FPGA 플랫폼이 많이 있습니다. 학업 가격이 도움이 될 것입니다. Terasic DE0-Nano 와 같은 것 전체 키트에 대해 $ 59입니다 (그리고 꽤 좋아 보입니다). $ 50-60은보고자하는 보드 별 범위 인 것 같습니다.

5) FPGA와 관련하여 정말 멋진 것들이 많이 있습니다. FPGA와 함께 사용하기 위해 수백 개의 사전 빌드 된 모듈을 제공하는 OpenCore 와 같은 사이트가 있습니다 . 많은 자습서와 프로젝트가있는 FPGA4Fun 이 있습니다. 순수한 엔터테인먼트를 위해 FPGA Arcade 는 FPGA로 게임을 제작하는 데 전념합니다. FPGA 보드 주변에 설정 한 내용에 따라 재미있는 수업이 될 수 있습니다.

6) 일부 보드에는 약간 오래된 Xilinx Spartan 3E 기반 보드를 사용하는 디지털 디자인 소개 (경고 : 큰 다운로드) 가 있습니다. (ActiveHDL을 기반으로하고 있지만 개인적으로보다 표준적인 VHDL 또는 Verilog를 선호합니다.) 주요 FPGA 공급 업체에는 Xilinx University Program , Altera University Program , Lattice University Program과 같은 대학 프로그램도 있습니다.

7) 워크 플로우는 요즘 전문 디자인 작업 방식과 훨씬 더 가깝습니다. FPGA 개발에 대한 실무 지식은 즉시 판매 가능한 기술입니다.


매우 감사합니다. 나는 이것들을 확실히 시험해 볼 것이다. FWIW, 하드웨어 실험실의 두 번째 학기를 가졌다면 FPGA 또는 Arduino와 함께 할 것입니다.
Ellen Spertus

5

저는 현재 게이트 수준에서 일을 처리하는 경우 "컴퓨터 아키텍처"영역에서 일하지 않고 실제로 기본적인 디지털 전자 장치를 수행하고 있다고 생각합니다. 또한 단일 학기에서 게이트 수준의 디지털 전자 장치부터 캐싱 알고리즘, 병렬 컴퓨팅 아키텍처, SIMD, 네트워킹 등에 이르기까지 알아야 할 모든 것을 가르 칠 수는 없습니다.

그래서 그것은 정말로 당신이 가르치고 싶은 것에 달려 있습니다. 게이트 레벨 디지털 전자 장치에 초점을 맞추려면 게이트 레벨 칩으로 작업하면 실습을 통해 학생들이 그 재료를 더 잘 이해할 수 있습니다. 그러나 컴퓨터 아키텍처를 가르치려면 AND 및 OR 게이트보다 훨씬 높은 추상화 수준에서 작업해야 할 것입니다.

최소한 HDL을 배우고 FPGA 기반 디자인을 구현하는 것이 나 자신에게 달려있어서 (교육 전문가로서) 이러한 기술이 학생의 목표에 어떻게 적합한 지 평가할 수 있습니다. 다른 답변이 짧은 시간 안에 FPGA 설계를 빠르게 할 수있는 저비용 및 저비용 재료에 대한 많은 포인터를 제공 할 것으로 기대합니다. (힌트 : Xilinx와 Altera는 모두 수많은 애플리케이션 노트 및 기타 교육 자료와 함께 무료 소프트웨어 디자인 도구 및 시뮬레이터를 제공합니다).


나는 수업이 컴퓨터 아키텍처를 가르치지 않는다는 것에 동의하지 않는다. 학생들은 컴퓨터 아키텍처의 일부인 ISA를 구현하는 방법을 배우고 파이프 라이닝과 캐시에 대해서도 가르칩니다. 한 과정에서 가르치는 것보다 건축에 더 많은 것이 있다는 데 동의합니다. 저는 학생으로서 다른 여러 건축 과정을 수강하고 건축 등의 학술 및 산업 연구를 수행했습니다. HDL 및 FPGA를 살펴 보는 격려에 감사드립니다.
Ellen Spertus

5

TTL을 사용하면 얻을 수있는 장점 중 하나는 초등 회로의 경우 HDL의 세부 사항이 실제 회로를 가리는 것이며 대부분의 학생들은 HDL을 작성하고 배우는 데 대부분의 시간을 할애한다는 것입니다. TTL로 프로그래밍 가능한 시스템을 만들기가 어렵 기 때문에 첫 번째 부분의 TTL과 아키텍처 부분의 FPGA가 더 좋을 것이라고 생각합니다.


+1 HDL은 회로를 숨 깁니다. HDL에서 멀티플렉서를 작성하는 방법은 몇 가지가 있으며, 대부분 멀티플렉서를 작성하여 게이트가 멀티플렉서를 생성하는 방법과 관련이 없습니다.
ajs410

이것이 핵심 포인트입니다. 실제로 기본 수준에서 작동 방식을 이해하지 않고 FPGA 용 코드를 작성하는 것은 너무 쉬운 방법입니다. Altera의 IDE에는 게이트 레벨 설계에 집중할 수있는 회로도 입력 모드가 포함되어 있지만이를 고수함으로써 FPGA의 성능을 실제로 활용할 수는 없습니다. 실제로 전환의 요점은 무엇입니까?
Jules

1

실제 회로 어셈블리에 대한 실습 경험 의 중요성을 충분히 이해하고 있기 때문에 시뮬레이션이나 너무 많은 추상화를 "느끼는"느낌이 들지 않는 현대적인 컴퓨팅 실습을 다루지 못한다는 것을 인식하는 것이 중요하다고 생각합니다. 최선의 방법은 다음 단계의 복잡성을 시도하기에 충분한 추상화를 추가하기 전에 각 수준에서 약간의 작업을 수행하는 것입니다. 예를 들어, MIT 과정은 어느 시점에서 물리적으로 "빌드 된"8 비트 마이크로 프로그래밍 된 칩 및 모듈 위에서 실행되는 32 비트 RISC 머신의 소프트웨어 시뮬레이션을 시작했습니다. 그 시점에서, 나는 그러한 기계를 FPGA에 구현하는 것이 더 효과적이라고 주장합니다 (그들이 아마 그 이후로 아마 의심 한 것).

이 점에 비추어 볼 때 필자의 초기 단계에는 칩 및 와이어 단계와 코스 후반에 FPGA 단계를 모두 포함시키려는 유혹이 있습니다. 이미 브레드 보드 키트를 가지고 있기 때문에 초기 실습을 유지하고 FPGA 보드 또는 이후 실습을 위해 브레드 보드 가능한 FPGA 모듈을 사용할 수 있습니다. FPGA가 프로세서의 일부를 구현하는 외부 회로에 의존하는 하이브리드 머신을 구축하는 것은 가능하지만 매우 인공적인 느낌이들 것입니다. 복잡성이 하나의 브레드 보드를 초과하는 지점에서 기술을 전적으로 전환하는 것이 가장 현실적 일 수 있습니다.

교육 가격으로 기존 독립형 FPGA 보드를 $ 100 / ea 미만으로 소싱 할 수 있어야합니다.

다른 옵션은 프로젝트의 첫 번째 부분으로 FPGA 직렬 로딩 인터페이스를 구축하여 클래스의 일부로 자신을 구성하는 것입니다. 이것의 좋은 장점은 학생들이 학기 말에 보드를 돌리지 않고 보드를 유지할 수있을 정도로 비용이 적게 들기 때문에 소수의 사람들에게 지속적인 관심과 인식을 가져다 줄 것입니다.


매우 감사합니다. 나는 MIT에서의 변화를 알고 있었다. 사실, 저는 현재 기관에서 MIT가 더 이상 필요하지 않은 오래된 6.004 / 6.111 실험실 키트로 시작했습니다. 그러나 제 학생들은 MIT 학생들이 아니며 한 학기 동안 많이 흡수 할 수 없으므로 선택해야합니다. (실제로, 나는 MIT에서 대부분의 학생들이 그들에게 던져진 것만 큼 많은 것을 흡수 할 수 없다는 것을 알았습니다. 그러나 그것은 또 다른 토론입니다.) FPGA 보드의 저렴한 비용은 확실히 매력적입니다.
Ellen Spertus

1

올바른 접근 방법은 릴레이에서 몇 개의 게이트를 구축하는 것부터 시작하는 것이라고 생각합니다.이 게이트는보고 이해하기 쉽지만 현대 응용 분야에서는 너무 느리고 전력이 부족합니다. 그런 다음 트랜지스터를 사용하여 동일한 작업을보다 콤팩트하고, 더 빠르고, 효율적으로 수행하는 방법과 패키징 된 게이트 (예 : "쿼드 낸드 (quad nand)")가 어떻게 더 잘 수행 할 수 있는지 보여줍니다. 그 시점에 도달하면 멀티플렉서 및 게이트에서 래치와 같은 것을 만드는 방법과 패키지 된 멀티플렉서, 래치 등으로 더 큰 구조를 구축하는 방법을 보여줄 것을 제안합니다. 오늘날 수많은 수천 개의 개별 트랜지스터를 물리적으로 납땜하여 컴퓨터를 만들지 만 컴퓨터의 내부 작동은 모든 것이 훨씬 작다는 점을 제외하면 트랜지스터의 작동과 매우 유사합니다.

학생들이 이런 종류의 교육을 통해 얻을 수있는 주요 이점 중 하나는 많은 일들이 왜 그렇게 작동하는지 이해하는 것입니다. 예를 들어, 실제적인 물리적 구현이 필요하지 않은 명령어 세트를 "시뮬레이션"하는 경우 "로드 메모리"명령어는 세 번의주기가 필요하지만 다른 명령어는 하나가 필요합니다. 트랜지스터 레벨로 내려 가지 않고 어떤 것들을 이해할 수 있지만, 몇몇은 이해할 수 없습니다 (예 : 동기식 입력과 비동기식 입력의 중요성).

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