TWI383298B - 直接記憶體存取控制器及存取其緩衝記憶體的方法 - Google Patents
直接記憶體存取控制器及存取其緩衝記憶體的方法 Download PDFInfo
- Publication number
- TWI383298B TWI383298B TW97142617A TW97142617A TWI383298B TW I383298 B TWI383298 B TW I383298B TW 97142617 A TW97142617 A TW 97142617A TW 97142617 A TW97142617 A TW 97142617A TW I383298 B TWI383298 B TW I383298B
- Authority
- TW
- Taiwan
- Prior art keywords
- sub
- buffer
- buffer memories
- memory access
- direct memory
- Prior art date
Links
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Description
本發明係關於緩衝記憶體之資料存取(寫入及讀取),尤指一種用於直接記憶體存取控制器之緩衝記憶體的循環式存取方法,進而解決緩衝記憶體可能面臨的緩衝溢位或緩衝不足的問題。
於電腦系統中,緩衝記憶體係用來暫存於不同裝置間所傳輸的資料。一般而言,欲傳輸之資料會從一輸入裝置中取得並儲存於緩衝記憶體,再傳送至一輸出裝置,此外,亦可能用於電腦系統中不同程序之資料搬移。一般來說,緩衝記憶體主要用於當資料以不同之速度自一裝置接收以及傳送至另一裝置的過程中,居中緩衝不同傳輸速度的資料流。
因此,於電腦系統中,不同速度的硬體裝置必須傳送資料時,通常會利用一緩衝記憶體來補償速度不一致可能造成的延遲。另一方面,現今的電腦系統中,常採用一種直接記憶體存取(Direct Memory Access)技術,藉由直接記憶體存取的方式,電腦系統中的子系統(週邊硬體),可以不需透過中央處理器,逕行對電腦系統中之主記憶體(例如系統記憶體)進行存取。舉例來說,硬碟機/光碟機控制器、顯示卡及網路卡等等,皆可透過此種方式來存取主記憶體,這種方式主要的好處是取代以往透過中央處理器來進行資料搬移的方式,從而減少中央處理器的負擔,換言之,由於中央
處理器無須介入資料的傳送與接收,因此避免因頻繁的資料搬移而降低效能。一般來說,於直接記憶體存取操作中,資料搬移的動作主要由直接記憶體存取控制器來負責,事實上,直接記憶體存取控制器可視為一專職於資料搬移的處理器。再者,主記憶體的讀寫速度一般來說遠高於其它週邊裝置或輸出輸入裝置(硬碟機、網路卡),因此直接記憶體存取控制器通常會利用一緩衝記憶體來平衡兩個讀寫速率不對稱之裝置(記憶體與週邊裝置)之間的資料傳輸。然而,若有大量的資料須被寫入/讀出主記憶體時,會使得主記憶體與週邊裝置的速度落差越明顯,進一步造成緩衝溢位(buffer overflow)或緩衝不足(buffer underrun/underflow)。舉例來說,如果主記憶體將透過直接記憶體存取控制器以將內部資料寫入硬碟中,直接記憶體存取控制器會先行將自主記憶體處取得的資料暫時寫入緩衝記憶體,並視硬碟的操作狀態,再將資料傳送至硬碟。然而,若欲處理的資料量相當龐大,再加上主記憶體的讀寫速度遠高於硬碟,可能會造成緩衝記憶體的儲存空間被填滿時,硬碟卻又未完成資料寫入的動作,因此主記憶體已無法寫入任何資料,以致於主記憶體必須等待硬碟的寫入動作完成,造成電腦系統運作上的延遲,此係上述之緩衝溢位。
另一方面,反向的直接記憶體存取(週邊裝置至主記憶體)操作亦可能發生因週邊裝置讀取過慢,而使得主記憶體必須等待週邊裝置的讀取而造成延遲的情形,此種情形主要發生於週邊裝置的讀取速度趕不上主記憶體的寫入速度,使緩衝記憶體中已無任何
資料可傳輸至主記憶體,造成主記憶體必須等待週邊裝置將資料傳輸至緩衝記憶體才能繼續動作,此係所謂之緩衝不足。
簡言之,習知技術在直接記憶體存取的應用上,仍有不足之處亟需解決。
因此,本發明係提供一種直接記憶體存取控制器與存取直接記憶體存取控制器之緩衝記憶體的方法,主要是透過將該緩衝記憶體劃分為更多的子緩衝記憶體,以減少於直接記憶體存取操作中,主記憶體與週邊裝置之間資料存取速度不一致所造成的緩衝溢位與緩衝不足發生的機會,進而大幅提升資料緩衝的效能。
依據本發明之一實施例,其係提供一種存取一直接記憶體存取控制器之一緩衝記憶體的方法。該方法包含有:將該緩衝記憶體劃分為複數個子緩衝記憶體;以及依據至少一預定循環順序來存取該複數個子緩衝記憶體中至少一部份的子緩衝記憶體。
依據本發明之另一實施例,其係提供一種直接記憶體存取控制器。該直接記憶體存取控制器包含有一緩衝記憶體以及一直接記憶體存取控制單元。該直接記憶體存取控制單元耦接於該緩衝記憶體,用以將該緩衝記憶體劃分為複數個子緩衝記憶體,並依據至少一預定循環順序來存取該複數個子緩衝記憶體中至少一部份
的子緩衝記憶體。
更甚者,於本發明之一實施例中,寫入記憶體與讀取記憶體之直接記憶體存取操作分別使用不同之複數個子緩衝記憶體。
請參閱第1圖,第1圖係本發明直接記憶體存取控制器之一實施例的示意圖。如圖所示,於本實施例中,直接記憶體存取控制器130係依據一直接記憶體存取需求(direct memory access request)來進行一個自主記憶體120將資料寫入至硬碟110的直接記憶體存取操作。於此直接記憶體存取操作中,直接記憶體存取控制器130將自記憶體120取得的輸入資料先行寫入於緩衝記憶體100中,再將資料輸出至硬碟110。當直接記憶體存取控制器130完成本次直接記憶體存取操作之所有資料傳輸後,便發出一中斷需求(interrupt request)至一中央處理器(未示出),使該中央處理器進行後續的處理。
請注意,為求說明書之簡潔,於本實施例中僅說明本發明方法運用於一主記憶體120至硬碟110的直接記憶體存取操作,然而,此僅作為範例說明之用,並非作為本發明的限制,亦即熟稔本項技藝之人應可在閱讀本說明書內容之後,應可輕易將本發明方法應用於不同裝置之間的直接記憶體存取操作,而這些不違背本發明精神的設計變化皆屬本發明的範疇。
於本實施例中,緩衝記憶體100係被劃分為複數個子緩衝記憶體101、102、103、104、105、106,並依據緩衝記憶體101102103104105106101…的循環順序來將資料寫入於該複數個子緩衝記憶體中(請注意,子緩衝記憶體的個數僅作為範例說明之用,並非本發明的限制);相仿地,上述之複數個子緩衝記憶體101、102、103、104、105、106亦依據前述之循環順序來將資料輸出。舉例來說,若於上述之直接記憶體存取操作的期間中,僅有子緩衝記憶體106中存有未被輸出之資料,亦即代表:主記憶體120欲輸入之資料將於緩衝記憶體100的下一次輸入操作中,將輸入資料寫入子緩衝記憶體101(依據上述之循環順序寫入子緩衝記憶體106之後的子緩衝記憶體101);於子緩衝記憶體100的前一次輸出操作中,直接記憶體存取控制器130輸出子緩衝記憶體105的資料至硬碟110。同樣地,於上述之直接記憶體存取操作的期間,若子緩衝記憶體101、102中存有未被輸出之資料,亦即代表:主記憶體120欲輸入之資料將於緩衝記憶體100的下一次寫入操作中,寫入子緩衝記憶體103(依據上述之循環順序寫入子緩衝記憶體102之後的子緩衝記憶體103);於子緩衝記憶體100的下一次輸出操作中,直接記憶體存取控制器130輸出子緩衝記憶體101的資料至硬碟110。
於本發明之另一實施例中,提供一種以不同之子緩衝記憶體來分別作為寫入與讀取的直接記憶體存取操作之資料暫存的方法。
請參考第2圖,其係本發明直接記憶體存取控制器之另一實施例的示意圖。如圖所示,一直接記憶體存取控制器210於一記憶體至週邊裝置之直接記憶體存取操作中,利用緩衝記憶體220將資料自一主記憶體240傳輸至一硬碟250;此外,直接記憶體存取控制器210於一週邊裝置至記憶體之直接記憶體存取操作中,利用緩衝記憶體220將資料自一光碟機260傳輸至主記憶體240。本實施例中,緩衝記憶體220被劃分為子緩衝記憶體221、222、223、231、232、233(請注意,子緩衝記憶體的個數僅作為範例說明之用,並非本發明的限制)。
子緩衝記憶體221、222、223係用於主記憶體240傳輸資料至硬碟250之直接記憶體存取操作,並依據子緩衝記憶體221222223221…的第一循環順序來進行子緩衝記憶體的存取操作。此外,子緩衝記憶體231、232、233係應用於光碟機260傳輸資料至主記憶體240之直接記憶體存取操作,並依據子緩衝記憶體231232233231…的第二循環順序來進行子緩衝記憶體的存取操作。舉例來說,直接記憶體存取控制器210將自主記憶體240處取得的資料,依據前述之第一循環順序依序寫入子緩衝記憶體221、222、223並且亦依據該第一循環順序來依序將資料輸出至硬碟250。如此一來,藉由設置不同之子緩衝記憶體來處理寫入與讀取的直接記憶體存取操作之資料暫存,便可增加緩衝記憶體220於使用上的彈性。
簡而言之,依據以上所述的技術內容,本發明直接記憶體存取控制器(Direct Memory Access Controller, DMAC)所採用之存取一緩衝記憶體的方法主要是藉由直接記憶體存取控制器中的直接記憶體存取控制單元來將該緩衝記憶體劃分為複數個子緩衝記憶體,並依據至少一預定循環順序來存取該複數個子緩衝記憶體中至少一部份的子緩衝記憶體。於一實施例中(如第1圖所示),直接記憶體存取控制器中的直接記憶體存取控制單元將一輸入資料依據該預定循環順序寫入該複數個子緩衝記憶體,以及將暫存於該複數個子緩衝記憶體之一輸出資料依據該預定循環順序讀出;而於另一實施例中(如第2圖所示),該複數個子緩衝記憶體包含有複數個第一子緩衝記憶體與複數個第二子緩衝記憶體,以及直接記憶體存取控制器中的直接記憶體存取控制單元係將一輸入資料依據一第一預定循環順序寫入該複數個第一子緩衝記憶體,以及將暫存於該複數個第二子緩衝記憶體之一輸出資料依據一第二預定循環順序讀出。
總合上述,本發明所提供之直接記憶體存取控制器及其緩衝記憶體的存取方法,可以有效地改善緩衝記憶體可能面臨的緩衝溢位或緩衝不足的情形,進而減少隨之帶來的電路延遲以增加直接記憶體存取操作的實際頻寬。
以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
100、220‧‧‧緩衝記憶體
101~106、221~223、231~233‧‧‧子緩衝記憶體
110、250‧‧‧硬碟
120、240‧‧‧主記憶體
130、210‧‧‧直接記憶體存取控制器
260‧‧‧光碟機
第1圖係本發明直接記憶體存取控制器之一實施例的示意圖。
第2圖係本發明直接記憶體存取控制器之另一實施例的示意圖。
100‧‧‧緩衝記憶體
101~106‧‧‧子緩衝記憶體
110‧‧‧硬碟
120‧‧‧主記憶體
130‧‧‧直接記憶體存取控制器
Claims (8)
- 一種存取一直接記憶體存取控制器(Direct Memory Access Controller,DMAC)之一緩衝記憶體的方法,該複數個子緩衝記憶體包含有複數個第一子緩衝記憶體與複數個第二子緩衝記憶體,包含:將該緩衝記憶體劃分為複數個子緩衝記憶體;以及依據至少一預定循環順序來存取該複數個子緩衝記憶體中至少一部份的子緩衝記憶體,包含有:將一輸入資料依據一第一預定循環順序寫入該複數個第一子緩衝記憶體;以及將暫存於該複數個第二子緩衝記憶體之一輸出資料,依據一第二預定循環順序讀出。
- 如申請專利範圍第1項所述之方法,其中依據至少一預定循環順序來存取該複數個子緩衝記憶體中至少一部份的子緩衝記憶體的步驟另包含有:自一特定裝置接收該輸入資料;以及將所讀出之該輸出資料輸出至該特定裝置。
- 如申請專利範圍第1項所述之方法,其中依據至少一預定循環順序來存取該複數個子緩衝記憶體中至少一部份的子緩衝記憶體的步驟另包含有:將暫存於該複數個第一子緩衝記憶體之一輸出資料,依據該第 一預定循環順序讀出。
- 如申請專利範圍第3項所述之方法,其中將該輸入資料依據該第一預定循環順序寫入該複數個第一子緩衝記憶體的步驟另包含有:自一第一特定裝置接收該輸入資料;以及將暫存於該複數個第一子緩衝記憶體之該輸出資料,依據該第一預定循環順序讀出的步驟包含有:將該複數個第一子緩衝記憶體所讀出之該輸出資料輸出至異於該第一特定裝置之一第二特定裝置。
- 一種直接記憶體存取控制器(Direct Memory Access Controller,DMAC),包含有:一緩衝記憶體;以及一直接記憶體存取控制單元,耦接於該緩衝記憶體,用以將該緩衝記憶體劃分為複數個子緩衝記憶體,其中該複數個子緩衝記憶體包含有複數個第一子緩衝記憶體與複數個第二子緩衝記憶體,該直接記憶體存取控制單元係將一輸入資料依據一第一預定循環順序寫入該複數個第一子緩衝記憶體,以及將暫存於該複數個第二子緩衝記憶體之一輸出資料,依據一第二預定循環順序讀出。
- 如申請專利範圍第5項所述之直接記憶體存取控制器,其中該 直接記憶體存取控制單元係自一特定裝置接收該輸入資料,以及將所讀出之該輸出資料輸出至該特定裝置。
- 如申請專利範圍第5項所述之直接記憶體存取控制器,其中該直接記憶體存取控制單元係將該輸入資料依據該第一預定循環順序寫入該複數個第一子緩衝記憶體,以及將暫存於該第一複數個子緩衝記憶體之一輸出資料,依據該第一預定循環順序讀出。
- 如申請專利範圍第7項所述之直接記憶體存取控制器,其中該直接記憶體存取控制單元係自一第一特定裝置接收該輸入資料,以及將該複數個第一子緩衝記憶體所讀出之該輸出資料輸出至異於該第一特定裝置之一第二特定裝置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW97142617A TWI383298B (zh) | 2008-11-05 | 2008-11-05 | 直接記憶體存取控制器及存取其緩衝記憶體的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW97142617A TWI383298B (zh) | 2008-11-05 | 2008-11-05 | 直接記憶體存取控制器及存取其緩衝記憶體的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201019122A TW201019122A (en) | 2010-05-16 |
TWI383298B true TWI383298B (zh) | 2013-01-21 |
Family
ID=44831613
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW97142617A TWI383298B (zh) | 2008-11-05 | 2008-11-05 | 直接記憶體存取控制器及存取其緩衝記憶體的方法 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI383298B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5828856A (en) * | 1994-01-28 | 1998-10-27 | Apple Computer, Inc. | Dual bus concurrent multi-channel direct memory access controller and method |
TW200732925A (en) * | 2006-02-22 | 2007-09-01 | Simpletech Inc | Parallel data storage system |
-
2008
- 2008-11-05 TW TW97142617A patent/TWI383298B/zh active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5828856A (en) * | 1994-01-28 | 1998-10-27 | Apple Computer, Inc. | Dual bus concurrent multi-channel direct memory access controller and method |
TW200732925A (en) * | 2006-02-22 | 2007-09-01 | Simpletech Inc | Parallel data storage system |
Also Published As
Publication number | Publication date |
---|---|
TW201019122A (en) | 2010-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9460763B2 (en) | Holding by a memory controller multiple central processing unit memory access requests, and performing the multiple central processing unit memory request in one transfer cycle | |
KR101035225B1 (ko) | 개량 데이터 전송을 위한 제어기 장치 및 방법 | |
US9904635B2 (en) | High performance transaction-based memory systems | |
JP3534822B2 (ja) | キャッシュラインリプレーシング装置及び方法 | |
US7844752B2 (en) | Method, apparatus and program storage device for enabling multiple asynchronous direct memory access task executions | |
US9990138B2 (en) | Out of order SGL read sorting in a mixed system with PRP read or system that supports only SGL reads | |
US10540096B2 (en) | Method and design for dynamic management of descriptors for SGL operation | |
US10108565B2 (en) | Method for on-demand fetching of SGL pointers based buffer, traffic and command requirements | |
US8806071B2 (en) | Continuous read burst support at high clock rates | |
US7805579B2 (en) | Methods and arrangements for multi-buffering data | |
KR20060017816A (ko) | 주 메모리와 기억 장치 사이에서 데이터를 전송하는 방법및 장치 | |
CN116107635A (zh) | 命令分发器、命令分发方法、调度器、芯片、板卡、设备 | |
US8719542B2 (en) | Data transfer apparatus, data transfer method and processor | |
TWI383298B (zh) | 直接記憶體存取控制器及存取其緩衝記憶體的方法 | |
KR100638378B1 (ko) | 디스크 제어장치의 메모리 구조에 대한 시스템 및 방법 | |
CN100357920C (zh) | 平行输入/输出数据传输控制器 | |
JP2005267148A (ja) | メモリ制御装置 | |
KR102334473B1 (ko) | 적응형 딥러닝 가속 장치 및 방법 | |
US8769167B2 (en) | Channel device, information processing system and data transfer method | |
KR100817203B1 (ko) | 비휘발성 저장장치의 데이터 판독 방법 | |
TWI822516B (zh) | 執行主機寫入命令的方法及電腦程式產品及裝置 | |
TWI835027B (zh) | 更新主機與閃存位址對照表的方法及電腦程式產品及裝置 | |
JP2009266152A (ja) | コントローラ、ハードディスクドライブおよびコントロール方法 | |
US9106592B1 (en) | Controller and method for controlling a buffered data transfer device | |
TW202416108A (zh) | 排程和執行主機資料更新命令的方法及電腦程式產品及裝置 |