最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

懇請(qǐng)某芯片IP代理公司招聘一個(gè)學(xué)過(guò)匯編的臨時(shí)工

2021-12-01 00:19 作者:gueenet  | 我要投稿

  有一家自稱(chēng)代理IP知識(shí)產(chǎn)權(quán)和芯片設(shè)計(jì)的公司,最近聲稱(chēng)龍芯的LoongArch指令集抄襲了MIPS。理由是LoongArch中有8條(整數(shù))除法相關(guān)的指令,在MIPS中都能找到功能對(duì)應(yīng)的指令,不但相同功能的指令數(shù)量相同,而且助記符命名相似,以此來(lái)證明LoongArch抄襲了MIPS。

  為了讓這個(gè)論點(diǎn)站住腳,這家公司還特意與ARM和X86-64指令集進(jìn)行了相同對(duì)比,ARM只有4條整數(shù)除法指令(msub是減法指令),X86-64只有兩條整數(shù)除法指令。既能低調(diào)的表現(xiàn)出MIPS指令豐富,又能給LoongArch貼上了抄襲的標(biāo)簽,顯得很有智慧的樣子。

  原文中說(shuō)的“指令名稱(chēng)可以變更,但是二進(jìn)制代碼無(wú)法隱藏……”我認(rèn)為很有道理,可為什么對(duì)比分析的表格中,卻只列出來(lái)指令名稱(chēng),并沒(méi)有二進(jìn)制代碼呢?是色厲內(nèi)荏還是虎頭蛇尾?


  看到這樣的內(nèi)容,我感到無(wú)與倫比的震驚——莫非我曾經(jīng)學(xué)的匯編基礎(chǔ)知識(shí)是假的?難道我一開(kāi)始就記錯(cuò)了,我卻把那些錯(cuò)誤的知識(shí)奉為真理?——我惶恐不安、面若死灰地顫抖著雙手翻開(kāi)了兩本已經(jīng)泛黃的舊書(shū)?!皇俏义e(cuò)了,我搖搖欲墜的信念再次堅(jiān)定。

  不放二進(jìn)制編碼對(duì)照,我猜是因?yàn)樗麄儾恢涝趺词褂梅磪R編工具,不知道怎么查看到指令的二進(jìn)制編碼。甚至不知道各家的指令集手冊(cè)中都有指令的二進(jìn)制編碼格式,根本連從手冊(cè)上照抄下來(lái)都不會(huì)。而不是因?yàn)檫@些指令的二進(jìn)制編碼沒(méi)有相同之處,畢竟都是0和1組成的,如果忽略0和1不同的排列組合,所有的編碼都是一樣的呢!

  可能這家代理IP和指令集授權(quán),以及代理芯片設(shè)計(jì)的公司,只會(huì)做“代理”業(yè)務(wù)吧!這家公司只要有任何一名員工學(xué)過(guò)一點(diǎn)兒匯編,無(wú)論是高中生,初中生還是小學(xué)生,只要看過(guò)一兩本匯編教材,也不至于鬧出這樣的笑話(huà)來(lái)呀。

1. x86-64數(shù)除法指令也是8條,指令助記符的數(shù)量不等于指令數(shù)量

  上面的圖表中顯示,英特爾x86-64的整教除法指令只有2條。作為大名鼎鼎的復(fù)雜指令集,相同功能的指令數(shù)量居然少于精簡(jiǎn)指令集,這是多么的不可思議。

  實(shí)際上英特爾的除法指令也是8條,而某家公司誤以為指令助記符與指令一一對(duì)應(yīng),就篤定x86-64只有兩條除法指令,是根本不了解匯編指令和機(jī)器指令差異的表現(xiàn)。

  x86-64的除法指令根據(jù)除數(shù)長(zhǎng)度分為8位、16位、32位、64位這4種,每種除法指令都根據(jù)數(shù)據(jù)的符號(hào)類(lèi)型分為有符號(hào)和無(wú)符號(hào)兩種,因此是8條。雖然助記符只有div/idiv兩個(gè),但x86-64的每個(gè)通用寄存器都有5個(gè)不同的名字,分別表示8(兩個(gè))/16/32/64位,因此匯編時(shí)會(huì)根據(jù)寄存器的名字來(lái)生成對(duì)應(yīng)位數(shù)的二進(jìn)制指令。

  x86-64沒(méi)有單獨(dú)的整除取余指令,因?yàn)閐iv/idiv計(jì)算整除時(shí),可以同時(shí)得到余數(shù)。只是它的除法指令寄存器規(guī)則比較隱晦,固定地使用兩個(gè)寄存器來(lái)存放計(jì)算前的除數(shù)和計(jì)算后的商及余數(shù)。而像LoongArch這樣的指令集,則不使用隱含的寄存器規(guī)則,而是允許在指令中使用任何通用寄存器,擁有更高的靈活性。

2. LoongArch和MIPS為什么都是8條除法指令?

  對(duì)于32位的CPU而言,再支持16位和8位的除法指令其實(shí)沒(méi)有意義。Intel這么做是為了保持兼容性,在它最新款的CPU上還能運(yùn)行原始的16位x86程序。

  對(duì)于64位的CPU而言,如果所有應(yīng)用程序也是64位的,也沒(méi)有必要保留32位的除法指令,但為了兼容32位應(yīng)用程序而不得不保留。LoongArch指令集分為32位和64位兩個(gè)版本,64位版本的指令集兼容32位的應(yīng)用程序,因此就需要支持32位的指令。MIPS是后來(lái)才有的64位版本,也需要兼容32位應(yīng)用程序。因此它們的除法指令就需要32位和64位兩個(gè)版本。

  精簡(jiǎn)指令集為了避免像x86那樣“不透明的”寄存器使用規(guī)則,在設(shè)計(jì)指令時(shí)很少使用隱含寄存器。又因?yàn)橹噶铋L(zhǎng)度定長(zhǎng)為32bit,能容納4個(gè)寄存器(編號(hào))的指令格式就比較寶貴,所以整除和余數(shù)通常都是拆分成不同的指令。常見(jiàn)的數(shù)學(xué)算式不會(huì)同時(shí)使用除法的商和余數(shù)來(lái)參與下一步計(jì)算,因些這樣的設(shè)計(jì)實(shí)際上比x86的方案更加合理。最后參與計(jì)算的數(shù)據(jù)又分為有符號(hào)和無(wú)符號(hào)兩種類(lèi)型,那么最終的整數(shù)除法指令數(shù)量就是2×2×2=8(條),這不是誰(shuí)抄襲誰(shuí)的問(wèn)題,而是小學(xué)生都能自然而然得出結(jié)論的問(wèn)題。

  表格中為了制造LoongArch和MIPS除法指令數(shù)量相同的“巧合” ,而故意忽略了一些指令。比如在A(yíng)RM的單元中,把msub也列為了除法指令,那么MIPS也有musb,還有msubu,是不是也應(yīng)該作為除法指令呢?太刻意了,太刻意了!

3. ARM的整數(shù)除法相關(guān)指令為什么不是8條?

  因?yàn)锳RM指令集中只有整除指令而沒(méi)有求余數(shù)的指令,事實(shí)上ARM早期的時(shí)候連除法指令都沒(méi)有。沒(méi)有除法指令,沒(méi)有求余數(shù)指令,難道就不能做這種計(jì)算了嗎?顯然不是。

  比如13÷4,我們可以用13減4,再減4,再減4,然后余下的1比4小,減了三次4得到的商就是3,余下的1就是余數(shù)。只不過(guò)這種計(jì)算是通過(guò)軟件方式用減法指令去實(shí)現(xiàn)除法計(jì)算,往往需要算很多次減法才能得到一個(gè)除法結(jié)果。如果有除法指令而沒(méi)有余數(shù)指令怎么求余數(shù)呢?先算整除,再用被除數(shù)減去除數(shù)和商的積,得到的就是余數(shù)。步驟不多因此用軟件實(shí)現(xiàn)余數(shù)計(jì)算對(duì)性能影響不大,如果ARM加上求余數(shù)的指令,那么整除相關(guān)指令不多不少也是8條。

  表中列出的msub指令雖然可以用來(lái)計(jì)算余數(shù),但它并不是除法指令。msub的計(jì)算規(guī)則是 a=b-m*n,分明是減法和乘法的組合。加上這么一條,就顯得ARM和LoongArch及MIPS不那么相似了,太刻意了,太刻意了。ARM因?yàn)闆](méi)有余數(shù)指令,所以整數(shù)除法指令是4條,如果以后加上余數(shù)指令,那么就和LoongArch及MIPS一樣。

4. 指令助記符相似可以作為指令集相似的判定標(biāo)準(zhǔn)嗎?

  從這家公司給的表格中就可以看到,每種架構(gòu)的除法指令都包含div這個(gè)單詞。同理所有的乘法指令也包含mul的字樣,add是加法,sub是減法。不知道提出助記符相似就是抄襲這種觀(guān)點(diǎn)的公司,是否為常用的單詞都注冊(cè)了著作權(quán)和商標(biāo)?基本的語(yǔ)言文字是全人類(lèi)的共同財(cái)富,某些公司卻把我們大家的財(cái)富視為它的私產(chǎn)。

5. 指令功能相同可以作為侵權(quán)的證據(jù)嗎?

  這要分兩種情況。一是最基礎(chǔ)的功能,比如加減乘除、位運(yùn)算和邏輯運(yùn)算、分支跳轉(zhuǎn)、內(nèi)存訪(fǎng)問(wèn)等等。沒(méi)有任何一種指令集可以沒(méi)有這些功能的指令,只要有這些指令,那么它們的功能就一定是相同的。

  莫非某些公司認(rèn)為因?yàn)镸IPS計(jì)算200+50=250,所以其它的CPU就必須算出另外的結(jié)果?既然這家公司不可能為屬于全人類(lèi)的基礎(chǔ)知識(shí)注冊(cè)專(zhuān)利,那么各種架構(gòu)的基礎(chǔ)指令就不可能相互侵權(quán)。可是這家公司卻堂而皇之的用除法指令舉例,可能功能更復(fù)雜的指令他們看不懂吧。

  可能存在侵權(quán)情況的是另一種情況——各種架構(gòu)特有的指令。這也要一分為二,有的指令確實(shí)特別,但同樣是屬于基礎(chǔ)運(yùn)算而無(wú)法注冊(cè)專(zhuān)利,只有包含創(chuàng)新型計(jì)算方法的指令才有注冊(cè)專(zhuān)利的可能性。比如MIPS中有幾個(gè)把數(shù)據(jù)按照一定規(guī)則重新組織的指令,在專(zhuān)利過(guò)期之前,龍芯早期的兼容MIPS的CPU就沒(méi)有實(shí)現(xiàn)那幾個(gè)指令,而是用其它的指令組合來(lái)代替,只要對(duì)編譯器進(jìn)行一些修改就行了。

6. 龍芯沒(méi)有公開(kāi)LoongArch架構(gòu)手冊(cè)卷2和卷3,是否可以作為侵權(quán)的依據(jù)?

  欲加之罪,何患無(wú)辭。原文中用各種“巧合”來(lái)試圖證明龍芯侵權(quán),但該公司所稱(chēng)的“巧合”根本不是巧合。

  好巧,中國(guó)和美國(guó)的中學(xué)課程都有“語(yǔ)文”、“數(shù)學(xué)”、“物理”、“化學(xué)”……實(shí)在“巧合”得不可思議。

  好巧,無(wú)論x86-64、MIPS,還是LoongArch、ARM,都分為“基礎(chǔ)指令集”、“向量指令集”、“虛擬化指令集”等等,龍芯的LoongArch還多了一個(gè)“二進(jìn)制翻譯擴(kuò)展”指令集。

  好巧,你也是兩只眼睛一個(gè)鼻子?。縇oongArch和MIPS一點(diǎn)兒都不像,某公司為啥非要攀親戚關(guān)系?

  既然明知道龍芯還沒(méi)有公開(kāi)《卷二》和《卷三》,不知這家公司怎么就提前知道龍芯侵權(quán)了?是能掐會(huì)算還是信口雌黃?

  龍芯公司為了保證不會(huì)侵權(quán),才需要花費(fèi)大量時(shí)間對(duì)國(guó)內(nèi)國(guó)外數(shù)萬(wàn)項(xiàng)CPU及架構(gòu)相關(guān)的專(zhuān)利進(jìn)行對(duì)比分析。大家都知道,絕大多數(shù)的專(zhuān)利說(shuō)明都寫(xiě)得云里霧里,籠統(tǒng)概括,需要極高的專(zhuān)業(yè)素養(yǎng)才能分析出會(huì)不會(huì)侵權(quán)。如果一天完成一項(xiàng)專(zhuān)利分析,三年才能分析一千多件,急什么。x86和MIPS都是它們各自領(lǐng)域的開(kāi)創(chuàng)者,專(zhuān)利風(fēng)險(xiǎn)極小。ARM的誕生不比MIPS晚多少,雖然與MIPS非常相似,但也并未產(chǎn)生過(guò)沖突。各種知名的架構(gòu)都已經(jīng)發(fā)展了幾十年,幾十年間還有更多的不知名架構(gòu)忽明忽滅,也不知道有多少專(zhuān)利尚未過(guò)期,都得仔仔細(xì)細(xì)地找出來(lái)對(duì)比分析。如果不仔細(xì)一點(diǎn),說(shuō)不定就碰上個(gè)地雷,一腳踩上去就甩不掉。

  更何況,像某公司這種,龍芯還沒(méi)有去踩,就主動(dòng)地蹦著跳著往身上蹭的,可能也還沒(méi)有全部冒出頭來(lái)。某些公司活力無(wú)限,年輕愛(ài)幻想,最?lèi)?ài)龍芯這樣穩(wěn)健的大叔啦?。?!可惜吸引大叔的方法錯(cuò)了,一邊把發(fā)臭的身體往大叔身上蹭,一邊大叫非禮,這樣會(huì)讓大叔討厭的啦……為了不讓路人嘲笑,還是招個(gè)學(xué)過(guò)匯編的臨時(shí)工吧,至少以后可以不那么粗陋,令人覺(jué)得多看你一眼就后頸發(fā)顫,胃里難受?。?!


懇請(qǐng)某芯片IP代理公司招聘一個(gè)學(xué)過(guò)匯編的臨時(shí)工的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
诸暨市| 平凉市| 南康市| 喀什市| 五台县| 桐乡市| 台北县| 旬邑县| 肥西县| 崇仁县| 普格县| 集安市| 方城县| 潮州市| 夏津县| 修水县| 台前县| 济宁市| 西林县| 黄平县| 通州市| 如皋市| 维西| 本溪市| 若尔盖县| 宁乡县| 沭阳县| 依兰县| 通海县| 龙胜| 甘谷县| 尤溪县| 揭阳市| 无棣县| 滕州市| 罗定市| 旺苍县| 赤峰市| 静海县| 鲁甸县| 塔城市|