{{위키데이터 속성 추적}}
{{다른 뜻 넘어옴|아키텍처|본 의미|건축학}}
[[파일:ABasicComputer.gif|섬네일]]
[[파일:com_abstract_layers_kor.png|섬네일|250px]]

'''컴퓨터 구조'''(computer architecture)는 [[컴퓨터 과학]]에서 컴퓨터 시스템의 기능(functionality), 조직(organization), 구현(implementation)에 대한 법칙과 방법을 통칭한다. 또 다른 정의로는 컴퓨터 구조는 [[명령어 집합|명령어 집합 구조]](Instruction set architecture, ISA), [[마이크로아키텍처]](Microarchitecture) 설계, 논리 설계 및 [[구현]]을 의미한다.<ref>{{서적 인용|last1=Hennessy|first1=John|last2=Patterson|first2=David|title=Computer Architecture: A Quantitative Approach|page=11|edition=Fifth|quote=This task has many aspects, including instruction set design, functional organization, logic design,and implementation.}}</ref>

== 역사 ==
컴퓨터 구조의 첫 번째 문서는 1837년 [[찰스 배비지]]가 고안한 [[해석기관]]으로 실제 제작되지는 않았지만 논리적 설계는 범용 컴퓨터의 모습을 예측한 중요한 모델로 평가된다. 1936년 [[불 논리]] 체계와 프로그래밍이 가능한 세계 최초의 기계식 컴퓨터 [[Z1_(컴퓨터)|Z1]]을 만들 때, [[콘라트 추제]]는 향후 자신의 프로젝트에 대한 두 가지 특허 출원서에 명령어와 데이터가 동일한 저장장치에 저장하는 [[프로그램 내장식 컴퓨터]] 개념을 최초로 기술하였다.<ref>{{인용|title=Electronic Digital Computers |journal=Nature |date=25 September 1948 |volume=162 |page=487 |url=http://www.computer50.org/kgill/mark1/natletter.html |accessdate=2009-04-10 |doi=10.1038/162487a0 |archive-url=https://web.archive.org/web/20090406014626/http://www.computer50.org/kgill/mark1/natletter.html |archive-date=6 April 2009 |url-status=dead }}</ref><ref>Susanne Faber, "Konrad Zuses Bemuehungen um die Patentanmeldung der Z3", 2000</ref> 이 개념은 1945년에 컴퓨터 구조의 두 가지 중요한 발자취로 이어진다.
* [[존 폰 노이만]]은 1945년 논문 "EDVAC에 대한 보고서의 첫 번째 초안(First Draft of a Report on the EDVAC)"에서 논리적 요소에 대한 구성을 기술<ref>{{서적 인용|title=First Draft of a Report on the EDVAC|last=Neumann|first=John|publisher=|year=1945|isbn=|location=|pages=9}}</ref>
* [[앨런 튜링]]은 [[존 폰 노이만]]의 논문을 인용하여 1945년에 더 자세하게 제안된 ACE(Automatic Computing Engine)<ref>Reproduced in B. J. Copeland (Ed.), "Alan Turing's Automatic Computing Engine", OUP, 2005, pp. 369-454.</ref>

[[컴퓨터 과학]]에서 컴퓨터 아키텍처라는 용어는 1959년 IBM 연구소의 라일 존슨(Lyle R. Johnson)과 [[프레더릭 브룩스]](Frederick P. Brooks, Jr.)에 의해 사용되었다. 존슨은 [[로스앨러모스 국립 연구소]](당시 로스앨러모스 과학 연구소)용 슈퍼컴퓨터인 스트레치(Stretch)를 세부 수준까지 상세히 기술하기 위해서 형식, 명령 종류, 하드웨어 매개변수, 속도 향상 등에 관한 설명은 "기계 구성"보다는 "시스템 아키텍처" 수준의 용어가 더 적합하다고 언급하였다.<ref>{{웹 인용|url=https://archive.computerhistory.org/resources/text/IBM/Stretch/pdfs/05-10/102634114.pdf|last1=Johnson|first1=Lyle|title=A Description of Stretch|page=1|year=1960|access-date=7 October 2017}}</ref> 그 후, 스트레치 설계자인 [[프레더릭 브룩스]]는 1962년 컴퓨터 시스템 계획: 프로젝트 스트레치(Planning a Computer System: Project Stretch)에서 다음과 같이 언급했다.<ref>{{서적 인용|title=Planning a Computer System|last=Buchholz|first=Werner|publisher=|year=1962|isbn=|location=|pages=5}}</ref> {{quote|다른 아키텍처와 마찬가지로 컴퓨터 아키텍처는 구조 사용자의 요구를 결정한 후 경제적, 기술적 제약 내에서 가능한 한 효과적으로 요구를 충족하도록 설계하는 기술이다. (Computer architecture, like other architecture, is the art of determining the needs of the user of a structure and then designing to meet those needs as effectively as possible within economic and technological constraints.)}}

브룩스는 계속해서 [[IBM_시스템/360]] 컴퓨터를 개발하는데 도움을 주었는데, 여기서 "아키텍처"는 "사용자가 알아야할 것"을 정의하는 용어가 되었다.

== 하부 분류 ==
컴퓨터 구조는 기본적으로 3가지 하부 분류가 있다.<ref>{{인용 |title=Computer components |journal=컴퓨터 구성 요소 |date=21 September 2008 |volume=162 |page=487 |url=https://linhkienlaptopthaiha.com/ |accessdate=2009-04-10 |doi=Computer |archive-url=https://web.archive.org/web/20180125172355/http://linhkienlaptopthaiha.com/ |archive-date=2018-01-25 |url-status=dead }}</ref><ref>
* [[명령어 집합|명령어 집합 구조]](Instruction set architecture, ISA) : 프로세서가 읽고 실행할 수 있는 [[기계어]]
* [[마이크로아키텍처]](혹은 컴퓨터 조직) : 특정 프로세서가 ISA를 어떻게 구현할 것인지를 설명.
* 시스템 디자인 : 컴퓨팅 시스템 내 모든 하드웨어 구성품을 포함하는 것을 의미
** 데이터 경로
** [[메모리 컨트롤러]] 및 계층
** [[직접 메모리 접근]](DMA)과 같은 CPU 이외의 데이터 처리
** [[가상화]], [[다중처리]]와 같은 기타 문제

== 참조 ==
<references />

== 같이 보기 ==
{{위키공용분류}}
* [[컴퓨터 하드웨어]]
* [[소프트웨어 아키텍처]]
* [[추상화 계층]]
* [[폰 노이만 아키텍처]]
* [[하버드 아키텍처]]

== 외부 링크 ==
* {{언어링크|en}} [https://iscaconf.org/ ISCA: Proceedings of the International Symposium on Computer Architecture]
* {{언어링크|en}} [http://www.microarch.org/ Micro: IEEE/ACM International Symposium on Microarchitecture]
* {{언어링크|en}} [https://web.archive.org/web/20050528085407/http://www.hpcaconf.org/ HPCA: International Symposium on High Performance Computer Architecture]
* {{언어링크|en}} [http://portal.acm.org/toc.cfm?id=SERIES311&type=series&coll=GUIDE&dl=GUIDE&CFID=41492415&CFTOKEN=3676847 ASPLOS: International Conference on Architectural Support for Programming Languages and Operating Systems] {{웨이백|url=http://portal.acm.org/toc.cfm?id=SERIES311&type=series&coll=GUIDE&dl=GUIDE&CFID=41492415&CFTOKEN=3676847 |date=20060509131452 }}
* {{언어링크|en}} [http://www.acm.org/tocs/ TCS: ACM Transactions on Computer Systems]
* {{언어링크|en}} [http://www.acm.org/taco/ TACO: ACM Transactions on Architecture and Code Optimization]
* {{언어링크|en}} [https://web.archive.org/web/20170714015812/https://www.computer.org/portal/web/tc/home TC: IEEE Transactions on Computers]

{{컴퓨터 과학}}
{{CPU 기술}}
{{전거 통제}}
{{토막글|컴퓨터 과학}}

[[분류:컴퓨터 구조| ]]
[[분류:중앙 처리 장치]]