999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

實時碰撞檢測算法中的數據緩存優化技術研究

2016-02-06 00:31:34殷存舉邵小蘭
電腦與電信 2016年5期
關鍵詞:結構

殷存舉 邵小蘭

(江蘇聯合職業技術學院常州劉國鈞分院,江蘇 常州 213000)

實時碰撞檢測算法中的數據緩存優化技術研究

殷存舉 邵小蘭

(江蘇聯合職業技術學院常州劉國鈞分院,江蘇 常州 213000)

在實時碰撞系統中,數據緩存的利用率對性能有極大的影響,本文通過重新設計算法和數據結構,并以一種更具預測性、線性或部分線性的方式訪問數據,有效地改善數據局域性特征。達到降低數據尺寸、提高空間和時間局域性特征進而提高數據緩存利用率的目的。

數據緩存;訪問頻率;優化;數據壓縮

1 結構優化

針對數據緩存的改進措施,首先考查結構和類的優化方案,包括以下三點:

(1)降低結構的整體尺寸。使用恰當的位數表示數字,從而可降低緩存單元中匹配數據量以及結構中相關字段的內存讀取次數。

(2)在結構內適當地重組字段。結構內的相應字段通常按照其自身含義加以分類,但從本質上講應以訪問模式加以分組,以使字段的訪問-存儲過程相吻合。

(3)根據數據的使用頻率劃分結構。由于結構內部相關字段的訪問頻率不同,可將那些不經常訪問的字段置入單一結構中,從而增加頻繁受訪數據緩存間的一致性,特別在該結構是數組或其他聚合型數據結構的某一部分時。

許多平臺上的對齊操作將會迫使編譯器對相關結構實施填充操作,即N字節字段將實現N字節對齊。由于填充結構的對齊尺寸往往是該結構中最大N字節字段的某一倍數,因此會浪費一部分內存空間??紤]到填充操作,按降序排序成員變量將在一定程度上節省內存空間。另外,某些編譯器會提供相應的警告,以助于檢測當前內存空間的消耗狀態。

基于MIPS平臺的體系結構往往有相應的對齊限制。其中,若定義了下列數據結構:

struct X{

int8 a;

int64 b;

int8 c;

int16 d;

int64 e;

float f;

};

struct Y{

int8 a,pad_a[7];

int64 b;

int8 c,pad_c[1];

int16 d,pad_d[2];

int64 e;

float f,pad_f[1];

};

struct Z{

int64 b;

int64 e;

float f;

int16 d;

int8 a;

int8 c;

};

則多數編譯器將會生成如下結果:

Sizeof(X)==40,Sizeof(y)==40,Sizeof(z)==24(這里,假設float類型為4字節)。與排序后的結構Z相比,結構X的填充數據占據了全部內存空間的40%(如結構Y所示)。其他縮減結構尺寸的相關方法如下:

(1)從已存儲值可輕易計算得到的數據值則不要存儲于結構中,以避免額外的緩存讀取操作。

(2)可能的話,盡量使用小尺寸的整型數據。

(3)采用位域表示法而非布爾值。盡量不采用Bool類型的標志變量,可將全部標志封裝至某一位域中。Bool變量的尺寸是依賴于機器環境的,其范圍從一個字節至長整型數據不等。將多個標志存儲于位格式中,可將所需內存空間至少減少至1/8,通常為1/32甚至更少。

(4)采用偏移量而非用于索引數據結構的指針。指針通常為4字節(或更多)固定尺寸變量,而偏移量的尺寸可根據索引項的數量產生變化。例如,2字節偏移量可索引包含216個對象的數組。

由于緩存失效將導致計算開銷急劇增加,因此必須謹慎處理壓縮/非壓縮數據。

需要指出的是,在某些系統結構中,上述方案可能會帶來額外的cpu計算開銷。例如,附加指令要求針對小尺寸整型數據或位域中的某一位進行操作。隨著指令運行數量的增加,緩存壓力也將會隨之增長,進而會逐漸抵消緩存優勢。因此,對代碼進行優化測試不失為一種較好的解決方案——理想情況下,可對變化前后的代碼分別進行測試,從而采取相應的改進方案。

對相關字段加以記錄實現起來并非易事。在某些情況下,多個字段將存儲于同一緩存單元中,尤其是多個字段被同時訪問時。考查下列情況,位置、速度以及加速字段經常被同時訪問,因而對其進行合并存儲將會增加執行效率。多數情況下,確定字段的最佳排列方式其過程往往比較復雜。理想情況下,編譯器將會參考前次運行信息并在后續編譯過程中自動執行相應的字段記錄。然而,相應的語言標準很可能并不包含字段記錄這一功能,且當前基本不存在相應的編譯器能夠支持該優化操作。一種較好的字段重組方案是通過訪問函數間接地獲取結構中的字段。這里,可臨時性地設置這些函數,以測試字段的訪問頻率并記錄哪些字段被同時訪問。另外,在某些情況下,對結構進行填充操作將會有效改善程序的計算性能,具體體現為:這將使被訪問的兩個鄰接字段位于同一緩存內。

考慮到結構字段的訪問頻率,可將其劃分為兩個不同的獨立結構:高頻被訪問字段結構和低頻被訪問字段結構,應分別對其分配內存空間并加以存儲。另外,各個高頻字段結構中均嵌入低頻字段結構的鏈接指針。此處,雖然只能對低頻字段結構實現間接訪問并增加了些許計算開銷,但相應的主結構(高頻被訪字段結構)將變得更加緊湊,并可實現高效的數據緩存。另外,由于結構的訪問方式不同,不必一定采用鏈接指針。例如,使用單獨的索引即可同時訪問高頻被訪字段數組和低頻被訪字段數組。

下面的示例顯示了結構的劃分過程且不使用鏈接指針。這里,相關代碼用于遍歷結構數組,當某元素具有最大值Value時,則增加該元素的count字段值。

struct S{

int32 value;

int32 count;

...

}elem[1000];

//Find the index of the element with largest value

int index=0;

for(int i=0;int<1000;i++)

if(elem[i].value>elem[index].value)index=i;

//Increment the count field of that element

elem[index].count++;

如果上述基于結構數組的搜索過程視為核心操作,則應將結構S劃分為高頻受訪字段結構(S1)和低頻受訪字段結構S2.上述代碼可改寫為:

//Hot fields of S

struct S1{

Int32 value;

}elem1[100];

//Code fields of S

struct S2{

Int32 count;

...

}elem2[1000];

//Find the index of the element with largest value

int index=0;

for(int i=0;int<1000;i++)

if(elem1[i].value>elem1[index].value)indexer=i;

//increment the count field of that element

elem2[index].count++;

因此,全部value字段在內存皆呈現連續排列狀態,即不再被結構S中的count字段和其他字段分割。因此,最大值value的搜索速度將提高2倍。(除了count字段,如果還能析取出其他低頻受訪字段,搜索速度還有更大的提升空間)。

類似于結構的低頻/高頻劃分,編譯器和鏈接器同樣也可以根據該原理對代碼進行重組,因而可對調用頻率較低的函數或部分函數進行移動,降低調用函數-被調函數之間的沖突,將會減少指令緩存中的操作次數。一類優化算法則是使用了“軟件著色技術”這一概念并對代碼(或數據)進行排列,進而將受訪頻率較高的數據項映射至不同的緩存單元中(各緩存單元可視為彼此不同的顏色值)。但目前為止,還很少有相應的編譯器能夠實現緩存著色技術。雖然該方案可實現手工處理,但一旦代碼產生變化,全部過程也需要重新處理。

2 頂點數據的量化操作和壓縮操作

針對碰撞檢測代碼,除去數據結構自身之外,頂點的表達方式也是十分重要的,因為它們構成了數據的主要組成部分。雖然頂點的x、y、z值常采用浮點數加以存儲,但也可對其實施量化操作。例如,可使用3個16位的整型值加以表示。相應的量化計算可有效地實現網格頂點的對齊操作,因此須謹慎處理以避免四邊形或其他大型碰撞測試圖元產生共面現象。

在某些情況下,還可以對頂點數據實現進一步的編碼。例如,對于小型場景世界,頂點可編碼位32位整型數據,其中頂點的x、y值分別占據11位,z值則包含10位,如圖1所示。

圖1 量化為32位整型數據的頂點值

當采用相對于前一頂點的偏移量來表示其他頂點時,頂點數據將會占用更少的內存空間。例如。在計算由頂點表示的AABB時,可將其中心點作為固定原點,并根據該原點計算其他頂點的偏移距離。這里,額外開銷僅為采用全精度表示的原點,其他頂點通過較少的幾個數據位即可實現。

例如,考查下列5個16位整型隨機頂點:A=(30086,15857,9358),B=(30189,15969,9285),C=(30192,15771,9030),D=(29971,15764,9498),E=(30304,15888,9133)。上述頂點也可以采用基于頂點(30138,15866,9264)的16位偏移量加以表示:(-52,-9,121)、(51,103,21)、(54,-95,-234)、(-162,-102,234),(166,22,-131)這里,量化頂點可采用9位數值加以存儲,相對于原點格式,這節省了大量的內存空間。

若原點可在頂點間浮動,則還能夠進一步地節省內存空間。亦即,可通過前一頂點計算偏移量,因而能夠有效地實現數據壓縮。該方案適用于索引網格,其中,頂點順序可實現隨機混合,這將有助于獲取較好的壓縮率。綜上所述,可對頂點A~E按照D、A、B、E、C這一順序加以重組,首頂點表示為(29971,15764,9498),且后續頂點分別為(115,93,-113)、(103,112,-100)、(115,-81,-122)、(-112,-117,-73)。因此,頂點分量可采用8位數據加以表示。

由于葉節點中的數據一般僅跨越場景世界中的某一小部分,因而空間劃分算法可與量化格式的葉節點數據結合使用。另外,局部數據的量化操作不但可以節省內存空間,還能夠實現坐標值的全范圍表示。如果相關葉節點數據待壓縮后實現緩沖存儲,其額外的壓縮消耗通??梢苑謹偟姆绞郊右缘窒?。令葉節點數據相對于某一原點(該原點表示父節點的空間位置)實現存儲,則可增加該處理過程的健壯性。此時,相關計算將圍繞此原點進行,從而可實現較高的精確度。

3 結論

本文從結構優化和頂點數據的量化操作和壓縮操作兩個方面論述了如何有效地改善數據局域性特征。達到降低數據尺寸、提高空間和時間局域性特征,進而提高數據緩存利用率的目的。對提高碰撞檢測系統的性能有一定的指導意義。

[1]張國飚,張華,劉滿祿,等.基于空間剖分的碰撞檢測算法研究[J].計算機工程與應用,2014,50(07):46-49.

[2]宋城虎,閔林,朱琳,等.基于包圍盒和空間分解的碰撞檢測算法[J].計算機技術與發展,2014(01):57-60.

[3]謝世富,馬立元,劉鵬遠,等.虛擬環境下運動線纜碰撞檢測算法研究與實現[J].系統仿真學報,2013,25(8):1865-1870.

[4]付躍文,梁加紅,李猛,等.基于多智能體粒子群的快速碰撞檢測算法研究[J].系統仿真學報,201325(8):1876-1880.

[5]張應中,范超,羅曉芳.凸多面體連續碰撞檢測的運動軌跡分離軸算法[J].計算機輔助設計與圖形學學報,2013,25(1):7-14.

[6]陸睿,劉卉.基于完全二叉樹BVH的自碰撞檢測算法[J].計算機應用與軟件,2012,29(12):282-285.

Research on Data Cache Optimization of Real-time Collision DetectionAlgorithm

Yin Cunju Shao Xiaolan
(Changzhou Liu Guojun Vocational Technology College,Changzhou 21300,Jiangsu)

In the real-time collision system,data cache utilization rate has a great effect on the performance.This paper redesigns the algorithms and data structures and access to data in a more predictive,linear or partially linear way.It effectively improves data locality characteristics.It achieves to reduce the data size,to improve the spatial and temporal characteristics,and to improve the efficiency of data cache.

data cache;access frequency;optimization;data compression

TP333

A

1008-6609(2016)05-0054-03

殷存舉,男,山東費縣人,碩士,副教授,研究方向:智能信息處理。

猜你喜歡
結構
DNA結構的發現
《形而上學》△卷的結構和位置
哲學評論(2021年2期)2021-08-22 01:53:34
論結構
中華詩詞(2019年7期)2019-11-25 01:43:04
新型平衡塊結構的應用
模具制造(2019年3期)2019-06-06 02:10:54
循環結構謹防“死循環”
論《日出》的結構
縱向結構
縱向結構
我國社會結構的重建
人間(2015年21期)2015-03-11 15:23:21
創新治理結構促進中小企業持續成長
現代企業(2015年9期)2015-02-28 18:56:50
主站蜘蛛池模板: 黄色污网站在线观看| 亚洲小视频网站| 亚洲一区二区约美女探花| 久久精品国产999大香线焦| 777国产精品永久免费观看| 网友自拍视频精品区| 高清视频一区| 免费在线a视频| 不卡国产视频第一页| 亚洲国产亚综合在线区| 亚洲国产中文在线二区三区免| 黄色网页在线播放| 免费在线成人网| 日韩天堂网| 91久草视频| 亚洲AV人人澡人人双人| 亚洲综合狠狠| 亚洲男人天堂网址| 激情综合图区| 国产成人亚洲精品无码电影| 无码'专区第一页| AⅤ色综合久久天堂AV色综合| 国产一在线观看| 丰满的少妇人妻无码区| 亚洲欧美另类日本| 91偷拍一区| 日本午夜三级| 91日本在线观看亚洲精品| 国产原创自拍不卡第一页| 亚洲中文字幕在线精品一区| 国产日本视频91| 国产美女人喷水在线观看| a级毛片在线免费| 激情亚洲天堂| 午夜日b视频| 美女扒开下面流白浆在线试听| 日韩午夜片| 欧美国产精品不卡在线观看 | 99久久精品国产自免费| 日本欧美精品| 日韩区欧美国产区在线观看| 91在线视频福利| 国产午夜看片| 国产精品亚洲αv天堂无码| 曰AV在线无码| 一级成人a毛片免费播放| 国产日韩久久久久无码精品| 欧美亚洲中文精品三区| 天天躁夜夜躁狠狠躁躁88| 谁有在线观看日韩亚洲最新视频| 日韩毛片在线播放| 国产日产欧美精品| 精品视频在线观看你懂的一区| 一级毛片在线播放免费观看| 女人18毛片久久| 国产精品女同一区三区五区| 亚洲综合天堂网| 亚洲欧美日韩中文字幕在线| 亚洲AV无码乱码在线观看代蜜桃| 精品国产香蕉在线播出| 在线毛片免费| 国产麻豆91网在线看| 国产玖玖玖精品视频| 国产欧美日韩视频怡春院| 波多野结衣久久精品| 国产一区免费在线观看| 91福利在线看| 在线观看91香蕉国产免费| 国产香蕉97碰碰视频VA碰碰看| 国产91全国探花系列在线播放| 亚洲国产综合第一精品小说| 手机在线免费不卡一区二| 26uuu国产精品视频| 国模视频一区二区| 91高清在线视频| 国产日韩欧美一区二区三区在线 | 欧美日韩在线亚洲国产人| 一级成人a毛片免费播放| 亚洲妓女综合网995久久| 九色在线观看视频| 无码专区在线观看| 一级香蕉人体视频|