分而治之,還能走多遠
分治法 (divide and conquer) 是解決復(fù)雜問題的一種有效策略。本質(zhì)上,它是把看似難以克服的問題分解成多個更小、更易于解決的部分。待這些部分被單獨解決之后,把結(jié)果合起來就得到完整的解答。
本文引用地址:http://2s4d.com/article/112491.htm分治法的最偉大實踐者之一是古羅馬帝國。他們成功地使用其稱之為“分而治之”(Divide and rule) 的方法來積聚和管理一個覆蓋三大洲的龐大帝國。他們在此方面如此擅長,以致其成為帝國日常活動和治理的一個根深蒂固和不被質(zhì)疑的部分。實際上,許多歷史學(xué)家認為,羅馬對分割和孤立其所統(tǒng)治的各個集團的必要性的盲目崇信是帝國發(fā)展停滯和最終衰落的一個重要因素。正如一位羅馬元老院議員當(dāng)時所說:“我們花了如此之多的精力來分割,以至于有時竟忘記了統(tǒng)治!”
電子設(shè)計師基本上都使用分治法來應(yīng)對日益復(fù)雜的電子器件與產(chǎn)品開發(fā)任務(wù)。我們把設(shè)計問題分成硬件、可編程硬件和軟件部分,并且?guī)缀跏仟毩⒌貙W⒂诿總€位元。等到某一時刻,再將這些部分組合起來形成最終產(chǎn)品。
雖然這種設(shè)計方法在過去對我們非常有用,但我認為在開發(fā)電子產(chǎn)品的方法方面,我們正面臨一個羅馬式的十字路口。沉溺于一系列孤立的設(shè)計流程可能會導(dǎo)致我們看不見更廣泛的可能性。
進步并非一個直線過程,它容易遇到不和諧的跳躍和間斷點,影響電子設(shè)計的最后間斷點是微處理器的普遍可用性。這一事實允許我們從根本上改變解決電子設(shè)計問題的方法并尋求針對、復(fù)雜硬件挑戰(zhàn)的軟件解決方案。另外它還允許我們探索以前不可運用的電子產(chǎn)品設(shè)計方法。本質(zhì)上,軟件是電子設(shè)計中的第一大領(lǐng)域。把硬件領(lǐng)域的一些復(fù)雜性轉(zhuǎn)移到軟件領(lǐng)域,解決這兩個領(lǐng)域的問題,然后將硬件與軟件結(jié)合起來形成最終產(chǎn)品,這是典型的分治法!
FGPA形式的可編程數(shù)字硬件已存在了很長時間。其設(shè)計是開發(fā)流程中的另一個“孤島”。也許是由于這個緣故,其使用迄今大多局限于代替板卡上的固定硬件邏輯塊。但也許我們沒有看到更大的可能性,因為我們沒有將斷點——遍及所有設(shè)計范疇而非分散在特定設(shè)計范疇內(nèi)的斷點——連接起來。
正如羅馬所發(fā)現(xiàn)的那樣(實際上為時已晚),分而治之策略有一些意外的后果。其中之一是它會阻礙各文化之間的思想交流。雖然每種文化都會向前發(fā)展,但是要把文化完全不同的所有集團凝聚到同一發(fā)展方向上是極為困難的。結(jié)果就是社會發(fā)展停滯。
可編程邏輯器件現(xiàn)在已達到了一個性能/容量/價格“拐點”。像以前的微處理器一樣,該技術(shù)給我們的電子設(shè)計能力帶來了實現(xiàn)量子飛躍的誘人前景。我們能夠開始像開發(fā)軟件一樣容易地來開發(fā)硬件,我們能夠?qū)⒐δ茉谟布蛙浖g隨意移動,我們能夠幾乎沒有限制地更新硬件。
但是,與微處理器革命不一樣,這種間斷性向前跳躍要求我們不再對設(shè)計流程進行分割來“治理”領(lǐng)域,而是要求我們統(tǒng)一我們的當(dāng)前設(shè)計范疇,以便作為一個整體向前邁進。
如果我們想使用可編程器件作為過濾器來模糊硬件與軟件之間的界線,那么我們就需要以一種允許我們在構(gòu)成最終產(chǎn)品的所有元件之間進行自然合作的方法來從事設(shè)計工作。我們需要能夠隨意地將功能在不同領(lǐng)域之間推動,并使所有元件像我們一樣保持同步。
簡言之,我們有機會提升我們整個設(shè)計流程的抽象水平。我說的不是逐步改進設(shè)計難題的各個部分,單純提高軟件開發(fā)或硬件設(shè)計的效率是不夠的。我們需要夷平豎立在各種不同設(shè)計流之間的隔墻,將我們的整體設(shè)計策略提升到新的水平。這將帶給我們一個全新的設(shè)計世界。
為此,設(shè)計師和設(shè)計工具公司都需要風(fēng)物長宜放眼量,放棄其關(guān)于電子設(shè)計應(yīng)當(dāng)如何完成的先入之見,并開始研究如何才能將我們的各個社區(qū)團結(jié)成一個整體的問題。是時候了,我們應(yīng)該從設(shè)計流程中的各個孤立領(lǐng)域走出來,團結(jié)起來共同克服在創(chuàng)造下一代智能、連接型電子產(chǎn)品中的挑戰(zhàn)。
評論