日本在线www-日本在线播放一区-日本在线不卡免费视频一区-日本在线不卡视频-成人影院久久久久久影院-成人影院一区二区三区

最新廣告
關注中國自動化產(chǎn)業(yè)發(fā)展的先行者!
工業(yè)智能邊緣計算2025年會
CAIAC 2025
2025工業(yè)安全大會
OICT公益講堂
當前位置:首頁 >> 案例 >> 案例首頁

案例頻道

優(yōu)化機器人多處理機控制系統(tǒng)性能方法
  • 企業(yè):控制網(wǎng)     領域:傳感器     行業(yè):輸配電    
  • 點擊數(shù):2086     發(fā)布時間:2007-11-18 11:43:22
  • 分享到:
分析了有腿的步行機器人控制器性能瓶頸的產(chǎn)生原因,提出優(yōu)化機器人多處理機控制系統(tǒng)性能的有效方法。



                                         關鍵詞:機器人;乒乓效應;Cache中數(shù)據(jù)一致;互斥鎖機制

    唐俊奇(1967—)
男,工學學士,湄洲灣職業(yè)技術學院副教授、高級工程師,研究方向為計算機系統(tǒng)結構、計算機網(wǎng)絡。

    由于人工智能、計算機科學、傳感器技術及其它相關學科的長足進步,使得機器人的研究在高水平上進行,同時也為機器人控制器的性能提出更高的要求。由于機器人控制算法的復雜性以及機器人控制性能的亟待提高,許多學者從建模、算法等多方面進行了減少計算量的努力,但仍難以在串行結構控制器上滿足實時計算的要求。因此,必須從控制器本身 尋求解決辦法。其中最有效的方法就是采用多處理器作并行計算,提高 控制器的計算能力。如:有腿的步行機器人,其控制器采用多CPU(多處理機)結構(多處理機結構)控制方式[1]即:上、下位機二級分布式結構,上位機負責整個系統(tǒng)管理以及運動學計算、軌跡 規(guī)劃等。下位機由多個CPU(處理機)組成,每個CPU控制一個關節(jié)運動,這些CPU和主控機聯(lián)系是通過總線形式的緊耦合。這種結構的控制器工作速度和控制性能明顯提高。在該控制器中多處理機系統(tǒng)的性能則成為機器人運動的瓶頸。

    在下位機的多處理機系統(tǒng)中,每個處理機中都引入一獨立的Cache,由于Cache的引入縮短了訪存時間,減少互連網(wǎng)絡、存儲器的帶寬壓力和沖突,可以有效地克服了因多處理機系統(tǒng)性能所導致的瓶頸問題,但同時也產(chǎn)生了Cache中共享數(shù)據(jù)的一致性問題。為此本文著重闡述解決Cache中共享數(shù)據(jù)的一致性問題的方法。
  
1 由CACHE數(shù)據(jù)導致機器人控制器性能降低的原因分析[2-6]

    有腿的步行機器人,其控制器采用多個CPU結構(多處理機結構)控制方式,在下位機的多個CPU(處理機)中,每個處理機控制一個關節(jié)運動。為了使高速緩存起到更大的作用,我們對現(xiàn)有協(xié)議中的并行算法要做一定的改動。比如,在數(shù)據(jù)項被訪問前就將一組數(shù)據(jù)項預先放入高速緩存的算法可以產(chǎn)生更高的性能。高速緩存的關鍵特性是以連續(xù)單元的塊的形式組成的。當處理器首次引用某個塊的一個或幾個字節(jié)后,這個塊的所有數(shù)據(jù)就會被傳送到高速緩存中。因此,如果引用這個塊中的其他數(shù)據(jù)時,該主存已在高速緩存中而不必從主存中調(diào)用它。如果高速緩存所使用的塊的大小和編譯器存儲數(shù)據(jù)的方法已知的話,并行算法就可以利用高速緩存的這一特性。當然,這種方法將大大地依賴于執(zhí)行這個程序所使用的實際系統(tǒng)的情況。



圖1  高速緩存中假共享

    之所以要在高速緩存中使用塊的原因是:順序程序的基本特性和引用的時間局部性(temporal locality)(也就是說存儲器引用傾向于接近以前存儲器引用)。在多處理機系統(tǒng)的高速緩存中使用連續(xù)單元塊的主要缺點是:在多處理機系統(tǒng)中,不同的處理器可能需要同一個主存塊的不同部分而不是相同的字節(jié)。盡管實際數(shù)據(jù)不共享,但如果一個處理器對該塊的其他部分寫入,則這個塊在其他高速緩存上的拷貝就要全部地進行更新或者使無效。這就是所謂的假共享(false sharing),它對系統(tǒng)的性能有負面的影響。圖1展示了假共享。在圖1中,一個塊由8個字組成,從0到7。兩個處理器訪問同一塊但不同部分(處理器1訪問字3,而處理器2訪問字5)。假設處理器1寫了字3,則高速緩存一致協(xié)議將更新或者使處理器2中的高速緩存塊無效,即便處理器2永遠也不訪問3。假設現(xiàn)在處理器2又改動了字5,則高速緩存一致協(xié)議反過來又要將處理器1中的高速緩存塊進行更新或者使無效,而處理器1也許也永遠不會訪問字5。這樣下去,就會導致高速緩存塊的乒乓效應(ping-ponging)。從而降低了控制器的計算能力。

2 Cache中數(shù)據(jù)一致性問題的解決方法  

    從硬件的角度來看:現(xiàn)有兩種解決Cache一致性硬件算法,但是都存在各自的問題:一是基于共享總線的多處理機系統(tǒng)監(jiān)視(Snoopy)協(xié)議,這種算法在處理機數(shù)目較多時,總線的負載壓力過大它將成為整個系統(tǒng)的瓶頸。另一種硬件算法為目錄表法,這種算法使得存儲器開銷大;實現(xiàn)一致性時,延盡時間較長;而且擴展能力也差。隨著系統(tǒng)中處理機數(shù)目的增加和多處理機系統(tǒng)的發(fā)展,硬件算法更加顯示出其缺點和局限性。這樣的系統(tǒng)難以保證機器人在高速運動中所要求的精度指標。我們必須尋找一個新的路徑以滿足現(xiàn)實需求。

    2.1 編譯時設置用基于訪存時標使Cache中數(shù)據(jù)一致

    基于訪存時標的方法這種方法的基本思想是每一共享數(shù)據(jù)都帶有一時鐘標計,而Cache中的每一字(一塊),以及讀寫訪存也都帶有一時鐘標計。若Cache中的一字被修改一次,則字的時鐘加1,當對Cache中的一字進行訪問時,若訪問時標大于或等于Cache中字的時標,說明訪問的是最新版本,否則訪問主存,例如:
 
/*LOOPiL*/
 Doall i1=1 ,n1
 .
 .
X(f0)    
 .
 .
end doall
 .
 .
/*  LOOPi3  */
Doall i3=1,n3
  .
 .
....      X(p0)
  .
  .
end doall

    程序中的數(shù)組X有一時鐘,其初始值為0,在LOOPi1;,之后,X的時鐘為1,經(jīng)LOOPi2;之后,X的時鐘為2。在LOOPi3;,中,若Cache中X的時鐘標計為0或為1,則說明不是最新版本,若為2,則說明Cache中的數(shù)據(jù)有效。

    基于訪存時標的方法,借用了流分析訪存標志法的思想但是它在更復雜分析的基礎上,引入動態(tài)成份—時標使之在一定程度上使失效的選擇性更加充分,提高了效率。

    2.2 使用互斥鎖機制避免假共享產(chǎn)生[2-6]

    有腿的步行機器人的下位機由多個CPU(處理機)組成,每個CPU控制一個關節(jié)運動,可以創(chuàng)建n個線程與之對應。為了便于分析,避開機器人關節(jié)運動的復雜性,而以對數(shù)組a[1000]求和這個簡單的例子來進行說明如何避免共享存儲器sum的乒乓效應。

    在此筆者將創(chuàng)建n個線程,每個線程都要重復地從列表中獲取元素并加到它們的和中。當所以的元素都被取走后這些線程就將它的部分和加到共享單元sum中,如下程序是按照圖4所示的結構創(chuàng)建共享數(shù)據(jù)。各個線程通過共享單元global_index獲取a[ ]數(shù)組的下一個未加元素。在這個index所指的數(shù)組元素被讀后,index就會加1,從而指向下一個未加元素,為下一次元素的獲取做好準備。結果所在的主存單元將sum,并將同樣被共享且使用鎖機制來保護對其的訪問。

    有一點非常重要,那就是不能在臨界段外訪問全局下標gloabnl_index。這包括察看下標是否達到最大值的操作。如下語句:

    while (global_index< array_aize)……

    需要訪問global_index,在while內(nèi)的語句體已經(jīng)被執(zhí)行之前,這個下標可能被其他的線程改變。在本代碼中,使用一個局部變量,local_indexgo 存放當前讀到global_index的值,以便更新部分和以及檢查下標是否達到了最大值。



圖 2  在互斥鎖機制中同時使用sum和global_index共享存儲單元

    在本代碼中,使用了互斥鎖機制,而沒有使用條件變量。使用該方法的程序如下:
  
    # include < stdio.h>
  # include < pthread.h>
  # include arrau_size 1000
  # include no_threads 10    /* shared data */
 int a[array_size];  /* array of numbers to sum */
 int global_index =0;  /* global index */
 int sum =0;  /* final result,also used by slaves */
 pthread_mutex_t mutex1;
 void * slave(void * ignored){ /* slave threads */
  int local_index,partial_sum =0;
do {   /* get next index into the array */
     pthread_mutex_lock(&mutex1);
     /* read current index & save locally */
     local_index = clobal_index;
     global_index ++;        
     /* increment clobal index */
    pthread_mutex_unlock(& mutexl);
    if (local_index<array_size)
     partial_sum += * (a+local_index);
  }while(local_index<array_size);
  pthread_mutex_lock(&mutexl); 
  /* add partial sum global sum */
    sum += partial_sum;
  pthread_mutex_unlock (& mutexl);
  return( ); }      /* Thread exits */
  main ( ) {
   int i;
pthread_t thread[no_threads];    /* threads */
   pthread_mutex_init(& mutexl,NULL);   
    /* initialize mutex */
for ( i=0; i<array_size; i++) / * initialize []  */
    a[i]=i+1;
   for (i=0;i<no_threads; i++)       
   /* initialize a[] */
 if(pthread_create(&thread [i],NULL,slave ,NULL) !=0)
  perror(“pthread_create fails”);
 for (i=0;i<no_threads; i++)  /* join threads */
  if (pthread__join(thread [i],NULL !=0)
 perror(“pthread_join fails”);
 printf(“The sum of 1 to *i is &d\n”,array_size,sum);}        /* end of main */
   SAMPLE OUTPUT
  The sum of 1 to 1000 is  500500

    2.3 用Java監(jiān)控程序的方法避免假共享產(chǎn)生[4]

    在Java中有監(jiān)控程序的概念。Java中的關鍵詞Synchronized可以使方法中的一段代碼成為線程安全的,它可防止多個線程間的沖突。

    仍以對數(shù)組a[1000]求和為例,在編程時采用動態(tài)平衡的方法來負責任務的分配,下面是利用JAVA監(jiān)控程序以避免共享存儲器sum的乒乓效應用于Java的監(jiān)控程序方法(利用該Java監(jiān)控程序實現(xiàn):一個線程承擔所有的工作)。

   public class Adder  {
   public int[] array;
    private int sum =0;
    private int index =0;
    private int number_of_threads =10;
    private int threads_quit;
    
    public Adder( ) {
     threads_quit =0;
array =new  int [1000];
initializeArray ( );
startThreads ( ); }
public synchronized  int  getNextIndex (){
if (index<1000)  return(index++);
else
 return(-1); }
public synchronized void addpartialsum(int partial_sum) {
sum=sum + partial_sum;
if(++ threads_quit = = number_of_threads)
System.out.println(“The sum of numbers is ”+sum);  }
private void initializeArray () {
int i;
for(i=0; i<1000, i++) array (i) =i; }
public void startThreads ( )  {
int i=0;
for (i=0;i<10;i++)  {
AdderThread  at = new AdderThread(this,i); }}
public static void main (String arge[ ]) {
Adder a= new  Adder ( ); }}
class AdderThead  extends  Thread
          {
      int partial_sum =0;
      Adder  parent;
      Int  number;
public AdderThread(Adder parent,  int  number)
{ this.parent=parmet;
 this.number=number; }
public void  run ( ) }
int index=0;
while (index !=-1){
partial_sum=partial_sum + parent.array[index];
index=parent.getNextIndex( ); }
system.out.println(“partial sum from thread”+ number +”is”
+ partial_sum);
parent.addpartialSum(partial_sum);}}
   
3 結束語

    仿真實驗表明:有腿的步行機器人,在其下位機的多處理機系統(tǒng)中,由于采用了編譯時設置用基于訪存時標、互斥鎖機制、Java監(jiān)控程序這些方法使Cache中數(shù)據(jù)保持一致,充分發(fā)揮了Cache的優(yōu)點縮短了訪存時間,減少互連網(wǎng)絡、存儲器的帶寬壓力和沖突,有效地克服了因多處理機系統(tǒng)性能所導致的瓶頸問題,從而提高了機器人多處理器計算機系統(tǒng)的性能。
  
參考文獻:

    [1]普杰信,嚴學高.機器人分布式計算機控制系統(tǒng)結構的性能分析[J].機器人,1994,16(3)144-149.

    [2]唐俊奇.多處理機系統(tǒng)Cache共享數(shù)據(jù)乒乓效應的研究[J].莆田學院學報,2006,13(2)51-54.

    [3]孫強南,孫昱東等編著.計算機系統(tǒng)結構[M].北京:科學出版社,2000.

    [4]殷兆麟.Java語言程序設計[M].北京:高等教育出版社,2002.

    [5]TMASEVIC M., AND V.MILUTINOVIC(1993),The Cache CoherenceProblem in Shard-Memory Multiprocessor:Hardware Solutions, IEEE CS Press,Los Alamitos,California.

    [6]薛燕,樊曉椏,李瑛. 多處理機系統(tǒng)中數(shù)據(jù)Cache的一種優(yōu)化設計[J].微電子學與計算機,2004,21(12),191-194.

熱點新聞

推薦產(chǎn)品

x
  • 在線反饋
1.我有以下需求:



2.詳細的需求:
姓名:
單位:
電話:
郵件:
主站蜘蛛池模板: 久久99国产精品一区二区,欧美日韩另类在线,婷婷四月开心色房播播网,收集最新中文国产中文字幕,亚洲综合激情六月婷婷在线观看,欧美一级淫片 | 无人 视频 在线观看免费高清-无吗视频-无码中文字幕日韩专区-无码中文字幕乱在线观看-国产区1-国产情侣一区二区 | 久久免费资源-久久免费小视频-久久免费手机视频-久久免费视频网站-欧美国产亚洲一区 | 亚洲欧美日韩综合一区久久,欧美69式视频在线播放试看,日韩欧美国产精品第一页不卡,亚洲美日韩,精品国产欧美一区二区,婷婷综合七月激情啪啪 | 国产激情对白一区二区三区四-国产或人精品日本亚洲77美色-国产黄站-国产黄在线免费观看-日韩中文字幕网-日韩中文字幕视频在线观看 | 精品性影院一区二区三区内射-精品亚洲成A人20247在线观看-精品亚洲国产成AV人片传媒-精品亚洲国产成人A片在线播放-精品亚洲国产成人A片在线观看-精品亚洲国产熟女福利自在线 | 亚欧成人毛片一区二区三区四区-亚欧成人乱码一区二区-亚久久伊人精品青青草原2020-亚飞与亚基在线观看-国产综合成人观看在线-国产综合91天堂亚洲国产 | 99riav视频-99riav视频国产在线看-99ri精品视频在线观看播放-99ri在线-99rv精品视频在线播放-99r视频里面只有精品 | 久久精品片-久久精品欧美一区二区-久久精品女人毛片国产-久久精品嫩草影院免费看-在线日韩国产-在线日韩不卡 | 亚洲最大色网-亚洲最大色图-亚洲最大情网站在线观看-亚洲最大免费视频网-九一自拍-九一制片厂制作果冻传媒网站 | 欧美日韩中文综合v日本-欧美日韩中文字幕久久-欧美日韩中文在线-欧美日韩中文一区二区三区-欧美日韩中文国产一区二区三区-欧美日韩在线视频观看 | 免费的成人a视频在线观看-免费岛国小视频在线观看-免费岛国-免费大香伊蕉在人线国产-免费大片黄在线观看日本-免费大片黄手机在线观看 | 欧美日韩 国产区 在线观看-欧美日操-欧美日本综合一区二区三区-欧美日本中文字幕-欧美日本中文-欧美日本在线一区二区三区 | 免费黄色在线观看视频-免费黄色在线观看-免费黄色在线电影-免费黄色在线-成人精品一区二区三区电影-成人精品一区二区三区 | 夜夜操狠狠操,99在线观看精品免费99,亲爱的妈妈2,色婷婷亚洲十月十月色天,精品福利一区二区在线观看,久久国产精品99精品国产 | jizzjizz在线-jizzxxxx18国产高清-jizzxxxx18中国-jizzxxxx18中国农村-欧美高清一区-欧美高清一区二区 | 国产婷婷视频-国产婷婷丁香久久综合-国产天天在线-国产天天操-小草在线免费观看视频-小草在线观看视频免费2019 | aaak7美国发布站-a v 在线视频 亚洲免费-99综合色-99在线这精品视频-国产成人综合洲欧美在线-国产成人综合在线观看网站 | 日韩专区第一页-日韩中文字幕在线亚洲一区-日韩中文字幕在线观看视频-日韩中文字幕在线播放-日韩中文字幕一区二区不卡-日韩中文字幕一区 | 国产欧美日韩中文久久-国产欧美日韩在线一区二区不卡-国产欧美日韩在线人成aaaa-国产欧美日韩在线观看一区二区三区-婷婷国产天堂久久综合五月-婷婷99视频精品全部在线观看 | 极品白丝-激性欧美激情在线播放16页-激情综合五月天丁香婷婷-激情伊人网-亚洲天堂久久精品成人-亚洲天堂久久精品 | 激情区小说区偷拍区图片区-激情偷乱人成视频在线观看-激情文学另类小说亚洲图片-激情销魂乳妇奶水小说-香蕉九九-香蕉成人啪国产精品视频综合网 | 人妻不敢呻吟被中出A片视频-人妻超级精品碰碰在线97视频-人妻换人妻AA视频-人妻寂寞按摩中文字幕-人妻精品国产一区二区-人妻久久久精品99系列A片毛 | 手机看片福利永久国产日韩-手机看片369-手机精品在线-手机国产乱子伦精品视频-国产精品嫩草影院在线观看免费-国产精品嫩草影院在线播放 | 四虎永久免费影院在线-四虎永久免费影院-四虎永久免费网站免费观看-四虎永久免费观看-国产精品麻豆综合在线-国产精品麻豆一区二区三区 | 麻豆系列国产剧在线观看-麻豆系列 在线视频-麻豆午夜视频-麻豆污视频-麻豆网站在线免费观看-麻豆网站在线看 | 国产一级免费-国产一级毛片网站-国产一级毛片潘金莲的奶头-国产一级毛片大陆-日本中文字幕免费-日本中文字幕高清 | 在线观看 一区-在线观看 亚洲-在线观看 日韩-在线观看 免费高清视频-久久婷婷国产一区二区三区-久久婷婷国产五月综合色啪最新韩国 | 五月天婷婷激情,99久久精品久久久久久清纯,免费亚洲网站,久久精品亚洲乱码伦伦中文,精品久久久久久国产牛牛app,97不用下载 | 欧美人与性动交a欧美精品-欧美人与物另类-欧美人与牲动交a欧美精品-欧美人与禽片免播放-国产福利在线观看永久免费-国产福利在线播放 | jizzjizz在线-jizzxxxx18国产高清-jizzxxxx18中国-jizzxxxx18中国农村-欧美高清一区-欧美高清一区二区 | 国产韩国精品一区二区三区久久-国产国语一级毛片在线视频-国产国语高清在线视频二区-国产国拍亚洲精品午夜不卡17-日韩在线欧美高清一区-日韩在线免费视频观看 | 美女内射毛片在线看-美女内射毛片在线看免费人动物-美女内射视频WWW网站午夜-美女强奷到抽搐在线播放-美女视频黄a视频全免费网站色窝-美女视频黄的全是免费 | 黄色在线网站-黄色在线网页-黄色在线网-黄色在线视频网址-品色阁-品色成人网 | 波多野结衣中文字幕教师-波多野结衣中文字幕2022免费-波多野结衣中文在线观看-波多野结衣中文在线播放-波多野结衣中文一区-波多野结衣中文丝袜字幕 | 一区二区视频在线观看高清视频在线-一区二区三区无码高清视频-一区二区三区无码被窝影院-一区二区三区四区国产-久久re视频精品538在线-久久re热在线视频精99 | 91精品国产色综合久久不卡蜜,999国内精品永久免费视频试看,五月婷婷六月香,欧美成人综合在线,日韩亚洲第一页,国产欧美日韩不卡在线播放在线 | 毛片黄色视频-毛片黄色片-毛片黄-毛片国产-亚洲剧场午夜在线观看-亚洲久操 | 国产又黄又爽又猛的免费视频播放-国产又黄又爽视频免费观看-国产又黄又湿又刺激不卡网站-国产又黄又a又潮娇喘视频-亚洲国产美女福利直播秀一区二区-亚洲国产乱码在线精品 | 欧美黑寡妇香蕉视频-欧美国产一区视频在线观看-欧美国产一区二区三区-欧美国产一区二区-国产成人精品第一区二区-国产成人精品2021欧美日韩 | 一道本在线,国产成人综合精品一区,亚洲v日韩v欧美在线观看,欧美精品国产综合久久,精品日本一区二区三区在线观看,久久精品一区二区三区不卡牛牛 |