很好奇,為什麼軟體要直接執行在CPU上?

時間 2021-05-06 17:27:42

1樓:

成本。相容性高、效能高與開發成本低是不可能三角,並且其中乙個提高時另外兩個是指數級下降的。

乙個作業系統不可能做到乙個中間層完美接管,即完美的相容性,並且效能足夠高,並且在你還活著的這短短幾十年的人類社會可能出現的最大軟體公司所能付出的成本下製造出來。

人類社會選擇用無數不同的團體,將這個「完美作業系統」分成若干層來分別開發維護才能做到乙個代替品,就是你現在用的windows、安卓、ios、黑莓或者塞班等等。

2樓:輕語碎雷

題主想要的東西當然是存在的。這個東西叫做:瀏覽器。

瀏覽器裡的軟體完美相容Intel版Mac和ARM版Mac。甚至換幾個OS也是毫無壓力。

3樓:狗肉 花與果

很簡單,因為做不到。

跨平台性和平台效能一直都是一對冤家。

畢竟我們出一種硬體就是為了解決某些效能痛點,那麼它必定有和其他硬體不同的特點,也就一定會有為其專門設計的軟體,於是這樣的軟體就可能無法很好的在其他硬體上執行。

4樓:撕逼客

恐怕你是不懂計算機原理和計算機發展史,連問題都問不對,你說的其實是「為什麼軟體要執行在作業系統上」,而不是「為什麼軟體要直接執行在CPU上」。

後來有人開始往微機上編寫作業系統,最著名的當然是IBM PC和MS-DOS,因為這樣可以更好地駕馭硬體,簡化軟體開發和執行。久而久之,這形成了一種生態,同時催生了現代意義的碼農。它們和早期的各路電腦奇才相比可以說匠氣十足,它們打交道的主要就是編譯器了,不再去深入研究處理器以及其他硬體,擺弄中斷請求這些東西。

作業系統對你是載入和執行各種軟體的地方,而對於碼農來說這是乙個軟體開發平台。

順帶說一句,其實現在的BIOS已經差不多是乙個準作業系統了,理論上是可以直接載入一些程式的。UEFI不僅繼續充當底層硬體和作業系統之間的中介,並且有更大的擴充套件能力,依然是可以直接在上面載入和執行程式的,通常情況下是自我維護診斷程式。

5樓:倩男幽夢

不同架構cpu指令集不一樣。

不太專業的比喻一下。軟體想執行了就告訴處理器,讓處理器幫他執行一下。處理器a用的是粵語,軟體用的是山東方言,軟體說話處理器聽不懂。

然後就顧了個翻譯官作業系統。就能執行了。但有一天,處理器a換成了處理器b,處理器b不懂中文,只會說西班牙語。

那翻譯官就學了西班牙語,軟體一開口說,我相當乾飯人,翻譯懵了,西班牙語沒乾飯人這麼乙個詞語啊。翻譯慢慢給處理器解釋,處理器最後也沒完全理解。吧軟體幹翻了。。

其實就是。軟體和作業系統溝通,作業系統和硬體溝通。其中那一環節溝通不暢,都會出問題。

6樓:可以是假名嗎

也有不是執行在cpu上的,比如早期的PLC,就是一堆繼電器,本身沒有什麼cpu控制。所有的邏輯關係(可以認為是軟體,比如延時,互鎖等等)都是靠繼電器來實現的。

7樓:

因為硬體效能是最基本的剛需,所有人都希望自己用的硬體能發揮出最大的效能,而用什麼虛擬CPU、虛擬機器、中介軟體之類的玩意兒必然損失效能。

所謂的讓使用者不需要關心CPU,意思就是我買了一套windows版的Office,然後發現在M1的MBP上不能用是吧。

這很好解決,會出現這種買錯東西的情況的使用者是極少數。而市面上針對CPU和OS就那麼幾種組合,乙隻手就能數過來了,良好的售前、售後就能解決絕大多數此類問題。

先買了x86版Ofiice的人,如果錯買了M1版的MBP,給他14天無理由退貨就是了,再去買個windows筆記本就好了。

如果是先買筆記本,給銷售人員培訓的時候,要他們在賣筆記本的時候明確告知使用者要買ARM版的Office,別買錯,不就結了麼?

如果PC市場有幾百種不同架構的CPU、上千種OS,那確實搞個虛擬CPU比較好,但實際上沒有這麼多,就這麼幾種。為了極個別人買錯的時候不走退貨流程,而讓所有人承受效能損失,何必呢?

8樓:木村·星辰

因為Intel上的MacOS和M1上的MacOS是兩個名字相同但是核心完全不同的作業系統。就連windows的x86和x64也是完全不同的;只是windowsx64自帶x86子系統並且指令集相容所以應用程式能夠執行。windowsx64就不能安裝windowsx86的驅動程式。

作業系統和指令集是繫結的,除了x64相容x86所以可以極低開銷執行子系統這樣的特例以外,跨平台執行的指令翻譯開銷都很難接受,一般只能重新編譯。

至於你說的中間層,應該是像瀏覽器這樣的東西,能在各種平台提供統一的環境,效能就不太行。能提高效能的各種API也是和作業系統及指令集深度繫結的。

9樓:何順建

一般來說,軟體必須編譯為CPU可以理解的二進位製碼才能執行。Cpu是要讀取軟體相關的每個指令來執行軟體所需要達到的一些目標,即使是gpu或者是FPGA或者是磁碟相關的一些活動,也是需要CPU把這些指令解析出來,並運送到對應的處理器上面。

10樓:計算機學徒

你這中間層和直譯器一樣工作,很多優化沒法做,比如無效的暫存器操作,那就累死了。而且你說的這種東西是存在的,以python指令碼形式存在的軟體不就是麼。

11樓:傑林修

因為哪怕按你的說法,軟體也不是跑在cpu上,是跑在系統裡的。

Intel和m1的問題是,換換系統了,從x86系統換成了arm系統了。

12樓:祺哥兒

軟體就是執行在系統上的呀,而系統呢是存在硬碟上的,可以被CPU操作的。

或者說CPU只是負責用來解釋和排程電腦所有的硬體,並且提供運算能力。

這個就涉及到CPU架構的問題了,我們平時用PC接觸的最多的就是X86架構,這個架構已經誕生了40多年了,雖然也有指令集的迭代和更新,但是這個架構一直是非常龐大複雜的,我們常用的桌面作業系統基本都是基於這個架構。可以這樣理解,在系統的開發階段,要用哪種架構就是確定好的,不然就是驢唇不對馬嘴,系統要幹什麼CPU聽不懂。

另乙個主流架構就是ARM架構,這個架構從誕生之初就是意圖要做乙個精簡的架構,不像X86那樣大而全,ARM可以用更低的功耗就滿足大部分的系統和軟體需求,所以這個架構被移動平台廣泛使用,畢竟誰也不想把X86架構動輒上百攝氏度的CPU放在手裡。

X86就像是個老教授,亂七八糟的書看的太多了,啥都會,但是老態龍鍾行動緩慢,你要是有啥特殊的要求,你問他,他準會。

ARM就是個專科教授,他本職的科目他特別精通,業務水平極高,但是其他的他啥都不會。

蘋果M1就是基於ARM的,所以很多蘋果手機的軟體可以直接用,因為大家說是同一種語言。但是蘋果M1不是簡單的使用ARM架構,蘋果把顯示卡和記憶體全部都放在了一起,現在幾乎所有手機都是這麼幹的,就是所謂的SOC,所以M1並不是乙個CPU,是乙個SoC。

曾經CPU顯示卡和記憶體是三個人,大家雖然配合默契,但是畢竟還需要溝通。M1就是乙個縫合怪,三個人變成乙個人,三位一體省去了中間溝通的環節,極大的提高了效率。這可能也是未來的趨勢,當主要硬體在物理層面已經做到極致的時候,再想要提高效能就只能從結構上去優化了。

兩個架構現在處於十字路口,東風壓倒西風,還是各自為政?蘋果M1已經證明了ARM可以勝任我們的大部分工作,但是放棄X86也是牽一發動全身。

長期共存並互有交叉可能會持續很久。Windows有ARM版本,Android也有X86的,在軟體層面上打通兩個架構,已經有很多人在做了。

為什麼軟體要發布 BETA 版,不直接發布正式版呢?

長白小蒙 test版本的資料可以自由操作,讓測試及相關研發進行測試,而beta版本的資料和生產環境的資料一樣,未來保證再嫁接正式資料時正式環境不出紕漏,所以需要beta回歸測試。 Chage Nithe 你所說的使用者體驗不好會不會流失掉這部分人群呢?會!但是值不值得呢?回答 非常值得!beta本身...

很好奇?!幾乎每個男人都會出軌?那大家為什麼要結婚???

朱身勇 你這什麼極端思路?夫妻關係處理的好,又哪來的出軌?出軌背後都是有原因的。出軌是一種狀態,處理好就沒有下一次,處理不好就有無數次。另外你問這個問題,是因為你想結婚但又被這樣的極端思路嚇到不敢結婚?如果這樣的話,建議你暫時不要結婚,等想清楚了再說,不然根據墨菲定律,你會 心想事成 的。 芝麻糖糖...

我很好奇為什麼有人狠噴廠長 uzi faker這種職業選手?

夜之的sad 噴UZI 和廠長這2個都曾經是給了他們希望但一直都無法實現所以因愛生恨的再不然就是被粉絲逼的噴飛科大概是前幾年韓雜太跳了 ytlxxi 眾所周知,人無完人。當乙個人過於出色的時候,他們的黑歷史 缺點就會無窮放大。在一張白紙上想要找到黑色的墨跡總要比其他顏色容易,不是嗎? 逸天 第一種人...