클리앙 게시판에서 논쟁 중인 64bit ARM(AArch64)에 대한 글.
http://www.clien.net/cs2/bbs/board.php?bo_table=lecture&wr_id=186703
http://www.clien.net/cs2/bbs/board.php?bo_table=lecture&wr_id=187235
기존 ARMv7-A 아키텍처에서 ARMv8-A 아키텍처로 변환되면서,
64bit(AArch64 :64bit ARM) 도입 및 아키텍처의 개선으로 성능 향상이 있다.
성능 향상에 대한 논점이 레지스터 크기 증가(64비트)및 갯수 증가에 따른 잇점을 다룸.
기존 ARMv7-A는 32비트 (architectural) register 16개(R0~R15)를 가졌으나
ARMv8-A는 64비트 (architectural) register 31개(R0~R30)를 가지고 있다.
SIMD(NEON)명령에 대한 레지스터도 증가.
=> Multiple issue 성능 향상이 있을것으로 생각됨.
http://cs.nyu.edu/courses/fall10/V22.0436-001/lecture17.html
OOO관련 Register renaming 정보:
Cortex-A9의 경우 register renaming scheme으로 56개의 physical register pool에 architectural register를 mapping 해준다고 한다.
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0388e/CHDIBEGC.html
Cortex-A15 그리고, ARMv8-A의 Cortex-A57는 더 많은 수의 physical register pool을 가지고 있을 것으로 생각된다.
Intel 경우
Superscalar가 처음 도입된 Intel P6에서는 40개였다.(AMD K5는 16개)
instruction window(buffer) 정보:
intel의 Haswell은 192개, Sandy Bridge는 168개, Nehalem은 128개.
http://www.tomshardware.com/reviews/core-i7-4770k-haswell-review,3521.html
OOO관련 논쟁의 경우,
컴파일러가 최적화된 코드를 생성하지 못하는 경우도 있고, JAVA의 byte code 또는 Python 등의 인터프리터 언어 경우,
컴파일러가 백앤드에서 생성하는 코드만큼 최적화가 이루어지지 않는다면, OOO에 의한 성능 향상의 여지가 있다고 생각한다.