可編程邏輯電路裝置和可編程邏輯電路重配置方法
2023-04-23 16:48:16 1
專利名稱:可編程邏輯電路裝置和可編程邏輯電路重配置方法
技術領域:
本發明涉及一種可以動態重配置的可編程邏輯電路裝置和一種可編程邏輯電路重配置方法。本發明尤其涉及一種可以進行包括分支操作的處理的可編程邏輯電路裝置和一種可以配置包括分支處理的單元電路的可編程邏輯電路重配置方法。
背景技術:
作為一種可以動態重配置的邏輯電路,動態可編程門陣列(DPGA)是眾所周知的(參見日本專利申請公開號2001-202236;Yuichiro SHIBATA et.al.,「A data driving virtual hardware using anFPGA intergated with DRAM」,Journal of Information ProcessingSociety of Japan,Vol.40,否.5,May 1999,pP.1935-1945;和XiaopingLING et.al.,「WASMIIA multifunction programmable logicdevice(MPLD)with data driven control」,Journal of the Institute ofElectronics,Information and Communication Engineers,D-I,Vol.J77-D-1,否.4,April 1994,pp.309-317)。DPGA包括例如按矩陣排列的多個邏輯塊以及連接這些塊的多個邏輯塊間連接器。每個邏輯塊都提供了比較簡單的邏輯電路,這種邏輯電路基於外部設備所提供的電路塊信息和狀態信息。
具體地說,這種邏輯塊包括可以提供取塊於電路塊信息的查用表(LUT),以及由狀態信息所初始化並保持LUT的輸出的觸發器。
每個邏輯塊間連接器根據外部設備所提供的連接信息連接在一個邏輯塊的輸出與一個不同的邏輯塊的輸入之間。換言之,邏輯塊間連接器通過連接這些邏輯塊構成一個複雜的邏輯電路。
以前,要利用DPGA實現的電路被分為多個電路塊,這樣,電路的處理可以通過流水線處理來實現。只構成單一電路塊的DPGA實質上通過在非常短的時間內重配置電路塊來實現流水線處理,從而提供所要實現的電路功能。
然而,常規DPGA適合於提供含有簡單順序處理的電路,而且常規DPGA不能主動適應複雜的處理,諸如由於發生頻繁電路塊切換使整個電路吞吐量下降的分支處理。
發明內容
根據本發明的一個方面,提供了一種可編程邏輯電路裝置,該裝置包括動態切換和操作多個電路塊的可編程邏輯電路。這些電路塊包括執行分支處理的分支電路塊和有選擇地對分支電路塊所得到的數據進行多種處理的多個子電路塊。該裝置還包括存儲單元,它存儲分支電路塊所得到的數據以及被輸入了該數據的子電路塊的標識符。標識符與數據相關聯。該裝置還包括控制器,它使得可編程邏輯電路在處理存儲單元中所存儲的數據時,處理與與正在可編程邏輯電路中運行的子電路塊的標識符相同的標識符相關聯的數據優先於處理與其他子電路塊的標識符相關聯的數據。
根據本發明的另一方面,提供了一種可編程邏輯電路重配置方法,該方法用於重配置動態切換和操作多個電路塊的可編程邏輯電路。這些電路塊包括執行分支處理的分支電路塊和有選擇地對分支電路塊所得到的數據進行多種處理的多個子電路塊。該方法包括在存儲單元中存儲分支電路塊所得到的數據以及被輸入了該數據的子電路塊的標識符,標識符與數據相關聯;和使得可編程邏輯電路在處理存儲單元中所存儲的數據時,處理與與正在可編程邏輯電路中運行的子電路塊的標識符相同的標識符相關聯的數據優先於處理與其他子電路塊的標識符相關聯的數據。
在本發明的以下詳述中,結合附圖具體闡述了本發明的其他目的、特徵和優點,或從中可以看出本發明的其他目的、特徵和優點。
圖1是根據第一實施例的可編程邏輯電路裝置的框圖;圖2是在根據第一實施例的可編程邏輯電路裝置中輸入/輸出數據存儲單元的內部配置和控制器的部分內部配置的框圖;圖3示出了在根據第一實施例的可編程邏輯電路裝置中含有分支處理的目標電路中所進行的流水線處理的一個例子;圖4是在根據第一實施例的可編程邏輯電路裝置中所進行的電路塊確定處理的流程圖;圖5是在根據第一實施例的可編程邏輯電路裝置中分支處理存儲器上所進行的數據處理的流程圖;圖6A示出了存儲區中所存儲的數據的一個例子;圖6B示出了圖6A中所示的存儲器的更新結果;圖7示出了在根據第二實施例的可編程邏輯電路裝置中含有分支處理的目標電路中所進行的流水線處理的一個例子;圖8A示出了圖7中所示的存儲區中所存儲的數據的一個例子;圖8B示出了分支後在電路塊C3中所啟動的一連串順序處理所處理的數據的一個例子;圖8C示出了分支後在電路塊C5中所啟動的一連串順序處理所處理的數據的一個例子;圖8D示出了按編號遞減次序重新排列的數據的一個例子;圖9示出了在根據第三實施例的可編程邏輯電路裝置中含有分支處理的目標電路中所進行的流水線處理的一個例子;
圖10A示出了分支後輸入到電路塊C3中的數據的一個例子;圖10B示出了分支後輸入到電路塊C5中的數據的一個例子;圖11是可編程邏輯電路(DPGA)的功能性框圖;圖12是起電路A作用的可編程邏輯電路裝置的示意性框圖;圖13是起電路B作用的可編程邏輯電路裝置的示意性框圖;圖14是起電路C作用的可編程邏輯電路裝置的示意性框圖;圖15是起電路D作用的可編程邏輯電路裝置的示意性框圖;圖16是可編程邏輯電路的內部配置的框圖;和圖17是圖16中所示的可編程邏輯電路操作期間重配置過程的流程圖。
具體實施例方式
下面,將描述可以動態重配置的普通可編程邏輯電路裝置中所進行的簡單流水線處理。
圖11是普通可編程邏輯電路的功能性框圖。在圖11所示的例子中,在某一可編程邏輯電路裝置1000中進行包括從步驟A到步驟D的四個步驟的簡單流水線處理。
通常,象這樣含有不同步驟的一連串處理可以容易地利用包括與各個步驟相關的專用電路A、B、C和D的專用電路群1100與臨時存儲各個專用電路的輸入/輸出的先進先出(FIFO)存儲器1111至1115的組合來實現。然而,在圖11所示的可編程邏輯電路裝置1000中,這四個專用電路利用包括可編程邏輯電路1010以及電路信息A、B、C和D的可編程邏輯電路裝置1000來實現。在此假定用一個可編程邏輯電路1010來簡化描述。
可編程邏輯電路1010是DPGA,它是一種可動態重配置的邏輯電路。可編程邏輯電路1010根據外部設備所提供的電路信息實現任意邏輯電路。例如,如果提供了電路信息A,那麼可編程邏輯電路1010起電路A(電路塊A)的作用。如果提供了電路信息B,那麼可編程邏輯電路1010起電路B(電路塊B)的作用。如果提供了電路信息C,那麼可編程邏輯電路1010起電路C(電路塊C)的作用。如果提供了電路信息D,那麼可編程邏輯電路1010起電路D(電路塊D)的作用。
一般而言,當提供了電路信息X時,可編程邏輯電路1010起電路X(電路塊X)的作用。換言之,可編程邏輯電路1010起到與提供給可編程邏輯電路1010的電路信息相應的電路(電路塊)的作用。
可編程邏輯電路1010的電路配置可以重配置。改變提供給可編程邏輯電路1010的電路信息可以改變可編程邏輯電路1010的電路配置。例如,如圖12中所示,可編程邏輯電路1010根據電路信息A可以起電路A的作用。如果提供了電路信息B,那麼可編程邏輯電路1010起電路B的作用,如圖13中所示。如果為可編程邏輯電路1010提供了電路信息C或D,可編程邏輯電路1010可以起電路C或電路D的作用,如圖14或15中所示。
換言之,如圖12-15所示,可以使可編程邏輯電路1010有時起電路A的作用,有時電路B的作用,有時起電路C的作用,而有時起電路D的作用。因此,有時只進行電路A中的處理而停止其他電路(B-D)中的處理。因此,當即刻改變可編程邏輯電路1010中所實現的電路時,執行步驟A、B、C和D中的處理。
如圖12-15所示,可編程邏輯電路裝置1000還包括FIFO切換器1020。為了改變可編程邏輯電路1010中所實現的電路,FIFO切換器1020改變與可編程邏輯電路1010連接的FIFO存儲器。例如,當使可編程邏輯電路1010起電路C的作用時,FIFO切換器1020將FIFO 1113連接到可編程邏輯電路1010的輸入端並將FIFO 1114連接到輸出端。當使可編程邏輯電路1010起電路D的作用時,FIFO切換器1020將FIFO1114連接到可編程邏輯電路1010的輸入端並將FIFO 1115連接到輸出端。
使可編程邏輯電路1010起電路A、B、C和D的作用的次序可以預先確定,或者可以動態確定。
圖16是可編程邏輯電路1010的內部配置的框圖。可編程邏輯電路1010包括多個單元塊2000和多個連接在單元塊之間的單元塊間連接器2010。每個單元塊2000包括對輸入數據進行邏輯操作的LUT 2001和當將LUT 2001的計算結果輸出到另一個單元塊時為該計算結果提供同步的D觸發器2002。
每個單元塊2000還包括存儲多個電路信息段的隨機存取存儲器(RAM)2003和切換提供給LUT 2001的電路信息段的切換器2004。可編程邏輯電路1010上所配置的單元電路的電路信息包括每個單元塊2000的電路信息段。通常,RAM 2003為互不相同的單元電路存儲電路信息段,但RAM 2003還可以為同一單元電路存儲電路信息段。
每個單元塊2000還包括當切換提供給LUT 2001的電路信息段時保存和恢復D觸發器2002中的狀態信息段的RAM 2005和切換所保存和恢復的狀態信息段的切換器2006。可編程邏輯電路1010上所配置的單元電路的狀態信息包括每個單元塊2000的狀態信息段。通常,RAM2005為互不相同的單元電路存儲狀態信息段,但RAM 2005還可以為同一單元電路存儲狀態信息段。
每個單元塊間連接器2010包括根據關於單元塊之間的連接關係的電路信息段將單元塊2000的輸出輸出到不同單元塊2000的連接器2011,存儲多個電路信息段以規定單元塊之間的連接關係的RAM2012,和切換提供給連接器2011的電路信息段的切換器2013。可編程邏輯電路1010上所配置的單元電路的電路信息還包括每個單元塊間連接器2010的電路信息段。通常,RAM 2012為互不相同的單元電路存儲電路信息段,但RAM 2012還可以為同一單元電路存儲電路信息段。
RAM 2003接收多個來自外部設備的關於邏輯計算的電路信息段,並存儲這些電路信息段。RAM 2012接收多個來自外部設備的關於單元塊之間的連接關係的電路信息段,並存儲這些電路信息段。RAM 2005與外部設備交換多個狀態信息段。切換器2004、2006和2013每個都接收來自外部設備的控制信號並執行切換操作。
在上述說明中,LUT 2001執行邏輯操作。然而,LUT 2001還可以執行算術運算和簡單程序。
圖17是可編程邏輯電路1010操作期間重配置過程的流程圖。這裡,假定重配置的控制由一個置於可編程邏輯電路1010之外的控制器(未示出)來執行。
該控制器針對可編程邏輯電路1010上的每個單元塊2000將與隨後要操作的單元電路相應的電路信息段2003-2和電路信息段2012-2從外部設備分別提供給RAM 2003和RAM 2012,並針對可編程邏輯電路1010上的每個單元塊間連接器2010將與隨後要操作的單元電路相應的狀態信息段2005-2從外部設備提供給RAM 2005(步驟S2101)。
控制器停止向可編程邏輯電路1010提供時鐘信號以停止處理(步驟S2102)。
控制器將與隨後要操作的電路相應的FIFO(未示出)連接到可編程邏輯電路1010(步驟S2103)。
控制器向切換器2006發送一個控制信號以將D觸發器2002中所保持的狀態信息段保存到RAM 2005中(步驟S2104)。所保存的狀態信息段作為狀態信息段2005-1存儲在RAM 2005中。
控制器將電路信息段寫入到LUT 2001中並將狀態信息段寫入到D觸發器2002中(步驟S2105)。具體地說,控制器向切換器2004發送一個控制信號。切換器2004將關於隨後要操作的電路的配置的電路信息段2003-2從RAM 2003複製到LUT 2001中。控制器向切換器2013發送一個控制信號。切換器2013將關於隨後要操作的電路的連接關係的電路信息段2012-2從RAM 2012複製到連接單元2011中。控制器向切換器2006發送一個控制信號。切換器2006在D觸發器2002上恢復與隨後要操作的電路相應的狀態信息段2005-2。
連接器恢復提供時鐘信號(步驟S2106)。必要的話,步驟S2104中保存在RAM 2005中的狀態信息段2005-1可以存儲到外部存儲器(未示出)中(步驟S2107)。
上述過程實現了邏輯配置的重配置。如果必要的數據已存儲在RAM 2003、2005和2012中,那麼可以省略步驟S2101。以上描述了當進行簡單流水線處理時所完成的可編程邏輯電路裝置1000的基本操作。
下面,將參照附圖詳述根據本發明的可編程邏輯電路裝置和可編程邏輯電路重配置方法的典型實施例。
根據第一實施例的可編程邏輯電路裝置利用可編程邏輯電路配置了一種涉及分支處理的目標電路。具體地說,本裝置在可編程邏輯電路上通過動態切換通過劃分目標電路所得到的電路塊來配置目標電路。本裝置的基本配置和基本操作遵循DPGA。特別地,根據第一實施例的可編程邏輯電路裝置具有以下特性為要傳送給分支目的地的電路塊的數據提供了該電路塊的標識符,並且用該標識符作為關鍵字來優先處理要傳送給當前配置在可編程邏輯電路上的電路塊(以下稱為「當前電路塊」)的數據。這裡,目標電路是指由多個電路塊構成的邏輯電路,因而它是可編程邏輯電路裝置所提供的功能性電路。
圖1是根據第一實施例的可編程邏輯電路裝置的框圖。圖1中,可編程邏輯電路裝置100包括可編程邏輯電路10、控制器20、輸入/輸出數據存儲單元30、狀態信息存儲單元40和電路塊信息存儲單元50。
可編程邏輯電路10是以DPGA提供的集成電路。電路塊信息存儲單元50存儲可編程邏輯電路10上所配置的各個電路塊的電路信息。具體地說,為每個電路塊安排和存儲分別提供給可編程邏輯電路10中的多個邏輯塊的LUT信息。
狀態信息存儲單元40存儲可編程邏輯電路10上所配置的各個電路塊的狀態信息。具體地說,為每個電路塊安排和存儲可編程邏輯電路10中的多個邏輯塊中所含的各個觸發器的狀態。由於狀態信息存儲單元40,在可編程邏輯電路10上可以配置特定狀態的電路塊。
輸入/輸出數據存儲單元30存儲輸入到可編程邏輯電路10的數據和從可編程邏輯電路10輸出的數據。換言之,輸入/輸出數據存儲單元30起到了在流水線處理中的電路塊之間進行連接的接口的作用。具體地說,輸入/輸出數據存儲單元30包括用作分支處理的分支處理存儲器31,還包括用作不含分支處理的處理(以下稱為「順序處理」)的順序處理存儲器32。更具體地說,順序處理存儲器32存儲輸入到進行順序處理的電路塊的數據或從該電路塊輸出的數據。分支處理存儲器31存儲從含有分支處理的電路塊輸出的數據。順序處理存儲器32還存儲從本可編程邏輯電路裝置100的外部輸入到可編程邏輯電路10所實現的目標電路的數據和從該目標電路輸出到可編程邏輯電路裝置100的外部的數據。
控制器20根據規定流水線處理的預定程序進行以下處理停止可編程邏輯電路10的操作;將狀態信息保存在狀態信息存儲單元40中;從電路塊信息存儲單元50和狀態信息存儲單元40中獲得隨後要配置的電路塊的電路塊信息和狀態信息,以配置一個新電路塊;切換分支處理存儲器或順序處理存儲器;和恢復可編程邏輯電路10的操作。
圖2是輸入/輸出數據存儲單元30的內部配置和控制器20的部分內部配置的框圖。分支處理存儲器31包括邏輯上分為N個存儲區60-1至60-N的RAM。這裡,N表示目標電路中所含的分支處理個數(即含有分支處理的電路塊個數)。順序處理存儲器32包括FIFO存儲器70-1至70-M、用於外部輸入的FIFO存儲器71和用於外部輸出的FIFO存儲器72。這裡M表示進行順序處理的電路塊個數。
圖3示出了在根據第一實施例的可編程邏輯電路裝置中含有分支處理的目標電路的流水線處理的一個例子。圖3中,可編程邏輯電路裝置100在可編程邏輯電路10上配置處於流水線處理的第一階段的電路塊C1。此時,輸入存儲器選擇器21將用於外部輸入的FIFO存儲器71連接到電路塊C1的輸入埠,而輸出存儲器選擇器23將用於順序處理-A的FIFO存儲器70-1連接到電路塊C1的輸出埠。結果,電路塊C1對FIFO存儲器71中所存儲的數據進行電路塊C1特有的順序處理,並將其結果輸出到FIFO存儲器70-1。
可編程邏輯電路裝置100在可編程邏輯電路10上配置處於流水線處理的第二階段的電路塊C2。此時,輸入存儲器選擇器21將用於順序處理-A的FIFO存儲器70-1連接到電路塊C2的輸入埠,而輸出存儲器選擇器23將用於分支處理-A的RAM中的存儲區60-1連接到電路塊C2的輸出埠。結果,電路塊C2對FIFO存儲器70-1中所存儲的數據進行電路塊C2特有的分支處理,並將其結果與指示分支目的地的電路塊的標識符一起輸出到RAM中的存儲區60-1。
分支處理數據管理單元22獲取位於RAM中的存儲區60-1的頭指針中的數據以及所存儲的與該數據相關聯的電路塊標識符,並在可編程邏輯電路10上配置該標識符所指示的電路塊。例如,如果電路塊標識符指示電路塊C3,那麼在可編程邏輯電路10上配置電路塊C3。此時,輸出存儲器選擇器23將用於順序處理-B的FIFO存儲器70-2連接到電路塊C3的輸出埠,而分支處理數據管理單元22以適當的定時將位於RAM中的存儲區60-1的頭指針中的數據發送到電路塊C3的輸入埠。如果電路塊標識符指示電路塊C5,那麼同樣地在可編程邏輯電路10上配置電路塊C5。以分支處理為條件的其他處理(可以是順序處理也可以是分支處理)可以在該分支處理之後進行。在圖3所示的例子中,分支到電路塊C3,然後利用電路塊C3中所進行的處理的結果來進行其他順序處理-C。
如果分支後完成了至少一連串的順序處理,那麼可編程邏輯電路100在可編程邏輯電路10上配置隨後要執行的電路塊C6。此時,輸入存儲器選擇器21將分支後處於多個連串順序處理的最後階段的FIFO存儲器70-3和70-4連接到電路塊C6的輸入埠,而輸出存儲器選擇器23將用於外部輸出的FIFO存儲器72連接到電路塊C6的輸出埠。結果,電路塊C6對FIFO存儲器70-3和70-4中所存儲的數據進行電路塊C6特有的順序處理,並將其結果輸出到用於外部輸出的FIFO存儲器72。用於外部輸出的FIFO存儲器72中所存儲的數據以預定定時由與可編程邏輯電路裝置100連接的外部裝置取出。
如上所述,控制器20基本上根據圖3中所示的流水線處理的次序來切換電路塊。然而,在將給定數量或更多的數據作為外部輸入被輸入到可編程邏輯電路裝置100後,根據電路塊之間的輸出數據數量以及處理時間的不同,數據被相繼累積到輸入/輸出數據存儲單元30中。換言之,將導致存在許多等待處理的數據的狀態,每個電路塊的吞吐量下降。如果只是按分支處理後輸出分支處理的結果的次序來確定電路塊切換,那麼切換將頻繁地發生。這種電路塊切換次數的增加將降低整個可編程邏輯電路裝置100的吞吐量。如果存在能採取大量分支目的地的分支處理,那麼這一問題尤其突出。
因此,在根據本實施例的可編程邏輯電路裝置100中的控制器20監視輸入/輸出數據存儲單元30,切換電路塊,以便將存儲了至少預定數量的數據的RAM中的存儲區或FIFO存儲器優先連接到可編程邏輯電路10。在處理分支處理存儲器31中所存儲的數據時,優先處理RAM中各存儲區所存儲的數據當中與被設為分支目的地的當前電路塊具有相同分支目的地的數據。
圖4是在根據第一實施例的可編程邏輯電路裝置100中所進行的電路塊確定處理的流程圖。可編程邏輯電路裝置100以預定定時定期監視分支處理存儲器31中的RAM中的各個存儲區和順序處理存儲器32中的FIFO存儲器(步驟S101)。作為監視結果,確定滿足預定條件的RAM存儲區或FIFO存儲器(步驟S102)。滿足預定條件的RAM存儲區例如是存儲了至少預定數量的數據的存儲區,或者是存儲了至少預定數量的分配有相同標識符的數據的存儲區。滿足預定條件的FIFO存儲器例如是存儲了至少預定數量的數據的FIFO存儲器。即使不存在滿足預定條件的存儲區或FIFO存儲器,也確定最接近該條件的存儲區或FIFO存儲器。
如果在步驟S102中確定了FIFO存儲器(步驟S103中為「是」),那麼確定要與作為輸入存儲器的FIFO存儲器連接的電路塊(步驟S104)。如果所確定的電路塊與當前電路塊不同(步驟S105中為「是」),那麼將可編程邏輯電路10上所配置的電路塊切換到步驟S104中所確定的電路塊(步驟S106)。如果所確定的電路塊與當前電路塊相同(步驟S105中為「否」),那麼再監視分支處理存儲器31中的RAM存儲區和順序處理存儲器32中的FIFO存儲器(步驟S101)。如果在步驟S102中確定了RAM中的存儲區(步驟S103中為「否」),那麼執行用於分支處理存儲器31的數據處理(步驟S110)。
圖5是在根據第一實施例的可編程邏輯電路裝置中分支處理存儲器上所進行的數據處理的流程圖。如果確定了滿足預定條件的RAM存儲區(圖4中的步驟S102),那麼分支處理數據管理單元22判斷當前電路塊的標識符是否在該存儲區中(步驟S201)。圖6A示出了存儲區中所存儲的數據的一個例子。如圖6A中所示,每個存儲區都有指針所標識的記錄。每個記錄都有存儲電路塊的標識符的標識符欄位和存儲分支處理所處理的數據的數據欄位。圖6A中,指針「addr1」是頭指針。
含有分支處理的電路塊產生一對標識符和數據。具體地說,含有分支處理的電路塊為分支處理輸出的數據分配一個指示分支處理所確定的分支目的地的電路塊標識符,並將這一對數據和電路塊標識符寫到空閒的並且指針最接近頭指針的記錄中。
如果在步驟S201中確定當前電路塊的標識符在該存儲區中,那麼進一步判斷在與當前電路塊連接的輸出存儲器(輸出FIFO)中是否有至少預定量的空閒空間(步驟S202)。如果有至少預定量的空閒空間(步驟S202中為「是」),那麼按離頭指針距離遞增的次序從該存儲區中取出與該標識符相應的數據即分配有當前電路塊的標識符的數據,並將該數據提供給當前電路塊(步驟S203)。刪除所取出數據所屬的記錄,並更新主存儲器,以便按從頭指針開始的次序為存儲區填充剩餘的記錄(步驟S204)。圖6B示出了更新圖6A中所示的存儲區所得到的結果。在圖6A和6B所示的例子中,當前電路塊用標識符SB來標識。
另一方面,如果在步驟S201中確定當前電路塊的標識符不在該存儲區中,那麼將可編程邏輯電路10上所配置的電路塊切換到具有位於該存儲區中的頭指針上的標識符的電路塊(步驟S211)。在圖6B所示的例子中,將該電路塊切換到標識符SE所標識的電路塊。電路塊切換後,再一次進行步驟S202中的判斷。
如果在步驟S202中確定沒有至少預定量的空閒空間(步驟S202中為「否」),那麼將可編程邏輯電路10上所配置的電路塊切換到具有該存儲區中所存儲的不同標識符的一個電路塊(步驟S212)。作為不同的標識符,例如可以選擇存儲區中最多的標識符。電路塊切換後,再一次進行步驟S202中的判斷。
如上所述,根據第一實施例的可編程邏輯電路裝置將分支處理後得到的數據和指示分支目的地的電路塊的標識符成對地存儲到分支處理存儲器31中,並且優先處理分配有與當前電路塊的標識符相同的標識符的數據。換言之,優先處理要輸入到當前電路塊的輸入埠的數據。結果,可以將分支處理所導致的電路塊切換的次數減至最少,同時可以提高整個可編程邏輯電路裝置100的吞吐量。
根據第二實施例的可編程邏輯電路裝置具有以下特性為要傳送給分支目的地的電路塊的數據提供了該電路塊的標識符和指示輸出次序的編號,並且用該標識符和編號作為關鍵字來優先處理要傳送給當前電路塊的數據。
根據第二實施例的可編程邏輯電路裝置的配置類似於圖1和2中所示的裝置的配置。不過,分支處理數據管理單元所進行的處理與第一實施例中分支處理數據管理單元22所進行的處理有部分不同。具體地說,根據第二實施例的可編程邏輯電路裝置中的分支處理數據管理單元除了第一實施例中分支處理數據管理單元22的功能之外,還在存儲數據和標識符時將指示與數據和標識符相關聯的數據輸出次序的編號存儲在分支處理存儲器31中。指示數據輸出次序的編號可以由執行分支處理的電路塊來提供,而不用分支處理數據管理單元22來提供。指示數據輸出次序的編號可以是單調遞增的序號,也可以是預定數值範圍內的循環編號。
圖7示出了在根據第二實施例的可編程邏輯電路裝置中含有分支處理的目標電路的流水線處理的一個例子。圖7中所示的流水線處理與圖3中所示的流水線處理的不同之處在於用於分支處理-A的RAM中的第一存儲區60-1的內容,在於電路塊C4和C5輸出的數據被存儲在用於分支處理-A的RAM中的第二存儲區60-2中,還在於存儲區60-2中所存儲的數據根據與那些數據相關聯的編號被重新排列並且結果得到的數據被存儲在FIFO存儲器70-5中。
換言之,相對於根據第一實施例的可編程邏輯電路裝置而言,根據第二實施例的可編程邏輯電路裝置具有以下特性確保了分支處理後數據的處理次序。
圖8A示出了圖7中所示的存儲區60-1中所存儲的數據的一個例子。如圖8A中所示,每個存儲區都有指針所標識的記錄。每個記錄都有指示數據輸出次序的編號欄位、存儲電路塊標識符的標識符欄位和存儲分支處理所處理的數據的數據欄位。圖8B示出了分支後從電路塊C3開始的一連串順序處理所處理的數據的一個例子。圖8C示出了分支後從電路塊C5開始的一連串順序處理所處理的數據的一個例子。如圖8B和8C中所示,每個電路塊都可以輸入一對編號和數據,並以類似的成對形式輸出其處理結果。
圖8B和8C中所示的數據被存儲在用於分支處理-A的RAM中的第二存儲區60-2中,並按編號次序重新排列。圖8D示出了其結果(存儲在FIFO存儲器70-5中)。
如上所述,根據第二實施例的可編程邏輯電路裝置將分支處理後得到的數據、指示數據輸出次序的編號和指示分支目的地的電路塊的標識符按組形式存儲到分支處理存儲器31中,優先處理所存儲的數據當中分配有與當前電路塊的標識符相同的標識符的數據,並且在分支處理後的一連串順序處理之後按編號次序重新排列那些數據。結果,除了上述第一實施例的效果之外,還可以在分支處理前後確保數據輸出次序。
可以將用於存儲分支處理的層次號的層次欄位加到分支處理存儲器31中的每一存儲區的記錄中。因此,即使在分支處理後在一連串順序處理中再一次出現分支處理,也能確保數據輸出次序。此時,層次號由分支處理數據管理單元22產生。
根據第三實施例的可編程邏輯電路裝置是根據第二實施例的可編程邏輯電路裝置的一種改進例子。根據第三實施例的可編程邏輯電路裝置具有以下特性將要傳送到分支目的地的電路塊的數據和指示數據輸出次序的編號的組合暫時存儲在用於分支目的地的電路塊的FIFO存儲器中。
圖9示出了在根據第三實施例的可編程邏輯電路裝置中含有分支處理的目標電路的流水線處理的一個例子。圖9與圖7的不同之處在於將存儲用於分支處理-A的RAM中的存儲區60-1中所存儲的數據當中與作為分支目的地的電路塊C3相關聯的數據(即數據和數據輸出次序的組合)的FIFO存儲器70-12連接到分支後所執行的電路塊C3的輸入埠;以及將存儲用於分支處理-A的RAM中的存儲區60-1中所存儲的數據當中與作為分支目的地的電路塊C5相關聯的數據(即數據和數據輸出次序的組合)的FIFO存儲器70-14連接到分支後所執行的電路塊C5的輸入埠。圖9中,FIFO 70-13的功能類似於圖7中所示的FIFO70-2的功能。
例如,如果圖8A中所示的數據已存儲在圖9中的存儲區60-1中,那麼將圖10A中所示的數據存儲在FIFO存儲器70-12中,並將圖10B中所示的數據存儲在FIFO存儲器70-14中。換言之,電路塊C3輸入圖10A中所示的數據,並通過FIFO 70-13從電路塊C4輸出圖8B中所示的數據。電路塊C5輸入圖10B中所示的數據,並輸出圖8C中所示的數據。將這些輸出數據存儲在用於分支處理-A的RAM中的第二存儲區60-2中,並將按數據輸出次序重新排列所得到的結果存儲在FIFO存儲器70-5中。
因此,在第三實施例中,同樣可以帶來如第二實施例中那樣的效果。
本發明並不局限於上述具體實施例。熟練技術人員可以容易地得出更多的效果和改進型例子。換言之,在不背離根據附屬權利要求及其等價要求的本發明的思想的前提下,可以對根據本發明的實施例作出各種改變。
如上所述,根據本發明的可編程邏輯電路裝置和可編程邏輯電路重配置方法可用於在可編程邏輯電路上動態重配置含有許多分支處理的目標電路,尤其適合於提供一種執行數據通信處理和圖像壓縮處理的電路。
熟練技術人員還容易想到另外一些優點和修改。因此,從更廣泛的意義上來說,本發明並不局限於本文所示和所述的具體細節和典型實施例。因此,在不背離附屬權利要求及其等價要求所規定的總體發明概念的思想或範圍的前提下,可以作出多種修改。
權利要求
1.一種可編程邏輯電路裝置,包括動態切換和操作多個電路塊的可編程邏輯電路,這些電路塊包括執行分支處理的分支電路塊和有選擇地對分支電路塊所得到的數據進行多種處理的多個子電路塊;存儲單元,它存儲分支電路塊所得到的數據以及被輸入了該數據的子電路塊的標識符,所述標識符與所述數據相關聯;和控制器,它使得可編程邏輯電路處理在存儲單元中所存儲的數據當中與與正在可編程邏輯電路中運行的子電路塊的標識符相同的標識符相關聯的數據優先於處理與其他子電路塊的標識符相關聯的數據。
2.如權利要求1所述的可編程邏輯電路裝置,其中存儲單元還存儲指示數據從存儲單元的輸出次序的編號;和控制器根據這些編號,將所述分支電路塊所進行的分支處理後所執行的其他子電路塊和其他分支電路塊中至少一個所得到的數據重新排列。
3.如權利要求1所述的可編程邏輯電路裝置,其中,如果正在可編程邏輯電路中運行的子電路塊的標識符沒有存儲在存儲單元中,那麼控制器將使由存儲在存儲單元的預定位置的標識符所指示的子電路塊在可編程邏輯電路中運行。
4.如權利要求1所述的可編程邏輯電路裝置,其中控制器計算存儲單元中所存儲的數據的數量;和如果所述數據的數量超過預定數量,那麼控制器使得可編程邏輯電路處理與存儲單元中所存儲的標識符當中的、正在可編程邏輯電路中運行的子電路塊的標識符相關聯的數據優先於處理與其他子電路塊的標識符相關聯的數據。
5.如權利要求1所述的可編程邏輯電路裝置,其中控制器計算存儲單元中所存儲的數據的數量;和如果這些數據當中與同一標識符相關聯的數據的數量超過預定數量,那麼控制器使得可編程邏輯電路處理與存儲單元中所存儲的標識符當中的、正在可編程邏輯電路中運行的子電路塊的標識符相關聯的數據優先於處理與其他子電路塊的標識符相關聯的數據。
6.如權利要求1所述的可編程邏輯電路裝置,其中,存儲單元包括用於分支電路塊的隨機存取存儲器以及用於與分支電路塊不同的電路塊的先進先出存儲器。
7.一種重配置用於動態切換和操作多個電路塊的可編程邏輯電路的方法,這些電路塊包括執行分支處理的分支電路塊和有選擇地對分支電路塊所得到的數據進行多種處理的多個子電路塊,該方法包括在存儲單元中存儲分支電路塊所得到的數據以及被輸入了該數據的子電路塊的標識符,所述標識符與所述數據相關聯;和使得可編程邏輯電路處理在存儲單元中所存儲的數據當中與與正在可編程邏輯電路中運行的子電路塊的標識符相同的標識符相關聯的數據優先於處理與其他子電路塊的標識符相關聯的數據。
8.如權利要求7所述的方法,還包括根據指示數據輸出次序的編號,將分支電路塊所進行的分支處理後所執行的其他子電路塊和其他分支電路塊中至少一個所得到的數據重新排列。
9.如權利要求7所述的方法,還包括如果正在可編程邏輯電路中運行的子電路塊的標識符不在存儲單元所存儲的標識符中,使由存儲在存儲單元的預定位置的標識符所指示的子電路塊在可編程邏輯電路中運行。
10.如權利要求7所述的方法,還包括如果數據的數量超過預定數量,那麼使得可編程邏輯電路處理與存儲單元中所存儲的標識符當中的、正在可編程邏輯電路中運行的子電路塊的標識符相關聯的數據優先於處理與其他子電路塊的標識符相關聯的數據。
11.如權利要求7所述的方法,還包括如果所述數據當中與同一標識符相關聯的數據的數量超過預定數量,那麼使得可編程邏輯電路處理與存儲單元中所存儲的標識符當中的、正在可編程邏輯電路中運行的子電路塊的標識符相關聯的數據優先於處理與其他子電路塊的標識符相關聯的數據。
12.如權利要求7所述的方法,其中,存儲單元包括用於分支電路塊的隨機存取存儲器以及用於與分支電路塊不同的電路塊的先進先出存儲器。
全文摘要
一種可編程邏輯電路裝置包括動態切換和操作多個電路塊的可編程邏輯電路。這些電路塊包括執行分支處理的分支電路塊和有選擇地對分支電路塊所得到的數據進行多種處理的多個子電路塊。該裝置還包括存儲單元,它存儲分支電路塊所得到的數據以及被輸入了該數據的子電路塊的標識符。標識符與數據相關聯。該裝置還包括控制器,它使得可編程邏輯電路在處理存儲單元中所存儲的數據時,處理與與正在可編程邏輯電路中運行的子電路塊的標識符相同的標識符相關聯的數據優先於處理與其他子電路塊的標識符相關聯的數據。
文檔編號H03K19/173GK1725642SQ200510066820
公開日2006年1月25日 申請日期2005年4月26日 優先權日2004年7月20日
發明者菅野伸一, 樽家昌也, 大根田拓, 小川陸 申請人:株式會社東芝