摘要:美國思科公司總裁約翰·錢(qián)伯斯他在談到新經(jīng)濟的規律時(shí)說(shuō),現代競爭已經(jīng)不是大魚(yú)吃小魚(yú),而是快的吃慢的.在現代競爭中,效率有著(zhù)決定性的作用。專(zhuān)業(yè)的燒錄器廠(chǎng)商是如何做到比山寨燒錄產(chǎn)品的快呢? 美國思科公司總裁約翰·錢(qián)伯斯他在談到新經(jīng)濟的規律時(shí)說(shuō),現代競爭已“不是大魚(yú)吃小魚(yú),而是快的吃慢的.”在現代競爭中,效率有著(zhù)決定性的作用。 做嵌入式開(kāi)發(fā)的工程師都知道,一旦產(chǎn)品需要量產(chǎn),批量生產(chǎn)的燒錄器必不可少。在調試階段,工程師可以用串口下載來(lái)實(shí)現代碼的燒錄,如果用串口進(jìn)行生產(chǎn),工廠(chǎng)是絕不會(huì )允許的,因為效率實(shí)在太低。 燒錄器的功能,主要對非易失性的存儲器進(jìn)行操作(MCU內部Flash也都是各類(lèi)非易失性的存儲器)。這些存儲器通常都需要擦除、編程和校驗。這些基本操作和一些控制設置操作,是燒錄的主要內容。 通常情況下,這些操作都是依次執行的,先擦除,擦除完成后,對存儲器進(jìn)行加電編程,編程完成后,再對編程的部分進(jìn)行校驗、對比。這些步驟都是環(huán)環(huán)相扣,一步一步實(shí)現的,串行的處理效率是很低的。正如,一個(gè)人處理一件事忙不過(guò),那么兩個(gè)人三個(gè)人一起來(lái)呢,效率立即提高3倍。 一步一步實(shí)現的方式,就是目前市面上很多山寨燒錄器的做法,效率低下。 圖1山寨的燒錄器 專(zhuān)業(yè)燒錄器廠(chǎng)商,不僅提高燒錄時(shí)的工作頻率,而且命令之間也盡量提高并行度,以達到效率最大化。 稍微思考下,就會(huì )發(fā)現,燒錄器在編程過(guò)程中是按照這樣一個(gè)順序執行的:從上位機取命令數據→命令解析→執行。這個(gè)過(guò)程是一個(gè)按順序循環(huán)執行的,對應的操作為取指、譯碼和執行,解釋如下: 取指----從命令FIFO中取出指令。 譯碼----根據指令,產(chǎn)生對應的控制信號。 執行----執行擦除、編程或者檢驗操作,或者設置相關(guān)參數。 如果沒(méi)有采用流水線(xiàn)技術(shù),時(shí)空圖如圖2所示。 圖2無(wú)流水線(xiàn)時(shí)空圖 從圖2可知,每條命令都要經(jīng)過(guò)取指、譯碼和執行后才能進(jìn)行下一條命令,這嚴重影響系統的效率。最致命的是,取指、譯碼和執行都不能同時(shí)工作,只有完成取指之后才能譯碼,譯碼之后才能執行。 因此,燒錄器做出了改變,采用了“流水線(xiàn)”技術(shù)。根據編程器的操作步驟,可以把工作流程分為取指、譯碼和執行三部分,每一部分負責自己的工作。這樣不僅細化了整個(gè)工作流程,而且能夠使三部分同時(shí)工作,從而提高了并行度,進(jìn)而提高了工作效率。在FPGA硬件實(shí)現上,這三部分分別對應三個(gè)電路,并且在它們之間都插入寄存器組,組成三級流水線(xiàn),如圖3所示。這樣,在每個(gè)時(shí)鐘周期下,取指、譯碼和執行部分同時(shí)使用上級傳下來(lái)的數據工作,并且在下一個(gè)周期把結果傳給寄存器以供下一級電路使用。在這個(gè)過(guò)程中,寄存器起到了暫存結果的作用。 圖3 流水線(xiàn)電路示意圖 采用流水線(xiàn)技術(shù)的時(shí)空圖如圖4所示。 圖4流水線(xiàn)時(shí)空圖 從圖4中可知,相關(guān)的命令執行在時(shí)間上是交疊在一起的,也就是說(shuō)三條命令同時(shí)工作(經(jīng)過(guò)首次延遲之后)!比如,在時(shí)刻T4,指令N+3在取值,指令N+2在譯碼,指令N+1執行。值得注意的是,在某一時(shí)刻,它們雖然同時(shí)工作,但操作的都不是同一條指令。另外,在每個(gè)周期,都有一條命令在“執行”,也就是說(shuō)一個(gè)周期產(chǎn)生一個(gè)結果,而無(wú)流水線(xiàn)技術(shù)需要3個(gè)周期才有一個(gè)結果,相比之下,工作效率提高了3倍?上驳氖,流水線(xiàn)技術(shù)會(huì )提高頻率上限。 在FPGA設計上,需要估算取值、譯碼和之下三部分的延時(shí),盡量做到它們之間的延時(shí)相等或者接近,才能發(fā)揮流水線(xiàn)的優(yōu)勢。另外,理論上,流水線(xiàn)級數越多,工作頻率越快,效率相對也高。 |