引用:
作者flatmode
當然的 相容性最大問題在於16bit 8086 real mode. 而這還得牽扯到segmentation...這是為何x86 register那麼少的原因. 至於32 gprs prefix據說能run絕大多數的i386 code跟protect mode. 就只有8086模式因為沒有segment register無法跑. 而amd的方案則採取折衷16 rex + segmentaion來達成compatibility. 尤其在當年制定x86-64時主流仍是16/32bit windows 95/98當道讓amd作出了妥協 就現代的眼光也只能說在那個時空裡的amd太短視了.
|
其實也不能說AMD太短視,
畢竟當時的環境底下,
沒想到十幾年以後會因為當時的製程(130nm)限制,
記憶體控制器效率等的因素,把gprs設定在16會有這麼樣子的下場,
若是直說AMD在x86-64設定的時候短視,
"那也能說x86-32時代,為了相容real mode,而沒把gprs大幅增加,
是intel太短視。"是相同的道理。
其實加速的方式有很多,只要搞到程式碼不相容於前幾代的處理器,
要多快就有多快(MMX、sse x、AVX x、FMA3等等),
而當時x86-64推出,在什麼都沒有的情況之下要搞這個,
就自然而然的先求有,再求好,
如果真的gprs不夠用的話,再搞個x86-64 v2,
把gprs 16->32、甚至是64個,
也不是一個很困難的事情,只要程式執行的時候,加個判斷式來判斷就好,
只不過倒不如就用擴充指令集去搞加速,會比較不用大費周章去大改特改了。