Bài giảng Vi Xử lý nâng cao chương 2

76 32 0
Bài giảng Vi Xử lý nâng cao chương 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Chương 2: Hệ thống cấp bậc bộ nhớI. Giới thiệu (Introduction)1. Phân cấp bộ nhớ Tại sao cần phân cấp bộ nhớ?+ Người lập trình mong muốn có một bộ nhớ dung lượng rấtlớn, nhưng độ trễ phải nhỏ.+ Mỗi bit bộ nhớ nhanh thì đắt hơn nhiều so với mỗi bit bộnhớ chậm hơn.Chương 2: Hệ thống cấp bậc bộ nhớI. Giới thiệu (Introduction)1. Phân cấp bộ nhớ Tại sao cần phân cấp bộ nhớ?+ Người lập trình mong muốn có một bộ nhớ dung lượng rấtlớn, nhưng độ trễ phải nhỏ.+ Mỗi bit bộ nhớ nhanh thì đắt hơn nhiều so với mỗi bit bộnhớ chậm hơn. Giải pháp: Tổ chức bộ nhớ thành một hệ thống cấp bậc.+ Toàn bộ không gian nhớ nằm ở bộ nhớ có dung lượng lớnnhất và chậm nhất.+ Giữa bộ nhớ chậm nhất với bộ vi xử lý, tổ chức thêm các bộnhớ có dung lượng nhỏ dần nhưng nhanh dần về phía bộ xử lý.Chương 2: Hệ thống cấp bậc bộ nhớI. Giới thiệu (Introduction)1. Phân cấp bộ nhớ Tính cục bộ về thời gian và không gian (temporal and spatiallocality) đảm bảo hầu hết các tham chiếu có thể tìm thấy trên bộ nhớdung lượng nhỏ hơn.Sơ đồ hệ thống cấp bậc bộ nhớMemory Performance GapChương 2: Hệ thống cấp bậc bộ nhớI. Giới thiệu (Introduction)2. Tổ chức cấp bậc bộ nhớ Việc tổ chức cấp bậc bộ nhớ trở nên cấp thiết với sự xuất hiệncủa các bộ xử lý đa lõi gần đây.+ Intel core i7 có thể tạo ra 2 yêu cầu tham chiếu từ mỗi core,mỗi chu kỳ clock.25.6 billion 64bit data referencessecond +12.8 billion 128bit instruction referencessecond= 409.6 GBs+ Băng thông của DRAM chỉ là 25GBs (bằng 6%)Chương 2: Hệ thống cấp bậc bộ nhớI. Giới thiệu (Introduction)2. Tổ chức cấp bậc bộ nhớàCần thiết:+ Multiport, pipelined caches+ 2 levels of cache per core+ Shared thirdlevel cache on chipChương 2: Hệ thống cấp bậc bộ nhớI. Giới thiệu (Introduction)2. Tổ chức cấp bậc bộ nhớ Những bộ vi xử lý gần đây có tới hơn 10 MB bộ nhớ cachetrong chip (onchip cache)+ Đạt hiệu năng cao+ Tốn nhiều diện tích và công suất.Chương 2: Hệ thống cấp bậc bộ nhớII. Kiến thức căn bản về phân cấp bộ nhớ. Khi một datainstruction word không tìm thấy trong cache, thìmiss xảy ra.Sơ đồ hệ thống cấp bậc bộ nhớChương 2: Hệ thống cấp bậc bộ nhớII. Kiến thức căn bản về phân cấp bộ nhớ. Khi một datainstruction word không tìm thấy trong cache, thìmiss xảy ra.+ Fetch word from lower level in hierarchy+ Lower level may be another cache, or the main memory.+ Also fetch the other contained within the cache block.à Chú ý khai thác tính cục bộ (spatial locality)+ Place block into cache in any location within its set,determined by address.Chương 2: Hệ thống cấp bậc bộ nhớII. Kiến thức căn bản về phân cấp bộ nhớ. Cache block (cache line): Là đơn vị cơ sở của cache, có thểbao gồm nhiều byteword dữ liệu.Chương 2: Hệ thống cấp bậc bộ nhớII. Kiến thức căn bản về phân cấp bộ nhớ. Cache block (cache line) tag: Là số xác định duy nhất cho một nhóm dữ liệu. Mỗi mộtcache block có 1 tag đi kèm. Các vùng nhớ khác nhau có thể đượcánh xạ (mapping) đến cùng một cache block, do đó tag là để phânbiệt giữa các vùng nhớ đó.Chương 2: Hệ thống cấp bậc bộ nhớII. Kiến thức căn bản về phân cấp bộ nhớ. Cache block (cache line) tag valid bit: indicates whether the data in a block is valid (1) ornot (0).Cache block, tag, valid bitBlock 0Block 1Block 2Block 2k 2Block 2k 1Block 2n 2Block 2n 1… …Main memoryBlock 0Block 1Block 2Block 2k 2Block 2k 1…Cachetagtagtagtagtagv v v v vChương 2: Hệ thống cấp bậc bộ nhớII. Kiến thức căn bản về phân cấp bộ nhớ. Cache set – (A “row” in the cache) là một tập hợp các blocktrên cache. Số block mỗi một set được xác định bởi layout của cache.+ Directmapped: Mỗi set chỉ có 1 block.+ Fully associative: Cache chỉ có 1 set, và block có thể đượcđặt bất kỳ nơi đâu trên cache.+ setassociative: Nếu mỗi set có n blocks, gọi là nway setassociative.Memory address from processortag set index blockoffsetBlock addressDirect Mapped Block Placement0 4 8 CCache00 04 08 0C 10 14 18 1C 20 24 28 2C 30 34 38 3C 40 44 48 4CMemoryaddress maps to block:location = (block address) MOD ( blocks in cache)Fully Associative Block Placement00 04 08 0C 10 14 18 1C 20 24 28 2C 30 34 38 3C 40 44 48 4CCacheMemoryarbitrary block mappinglocation = anySetAssociative Block Placement00 04 08 0C 10 14 18 1C 20 24 28 2C 30 34 38 3C0 4 8 C40 44 48 4CCacheMemory0 4 8 CSet 0 Set 1 Set 2 Set 3address maps to set:location = (block address) MOD ( sets in cache)(arbitrary location in set)Where can a block be placed in the upper level?Block 12 placed in an 8block cache:Fully associative, direct mapped, 2way set associativeMapping = (Block Number) Mod (Number Sets)Cache01234567 01234567 01234567Memory111111111122222222223301234567890123456789012345678901Fully Mapped(fully associative)Directly Mapped(1way associative)(12 mod 8) = 42Way Associative(12 mod 4) = 0DirectMapped Cache DesignCACHESRAMADDRDATA31:00x00001C0 0xff083c2d010x0000000 0x000000211 0x0000000 0x0000010300100x23F0210 0x000000091V Tag Data=0x0000000 3 0DATA59 DATA58:32ADDRESS Tag DATA HIT =1SetIndex Byte OffsetSet Associative Cache DesignKey idea:Divide cache into setsAllow block anywhere ina setAdvantages:Better hit rateDisadvantage:More tag bitsMore hardwareHigher access timeAddress22 8Index V Tag012253254255Data V Tag Data V Tag Data V Tag Data22 324to1 multiplexorHit Data31 30 12 11 10 9 8 3 2 1 0A FourWay SetAssociative CacheFully Associative Cache Design= tag 11110111 data 1111000011110000101011Key idea: set size of one block1 comparator required for each blockNo address decodingPractical only for small caches due to hardware demands= tag 00011100 data 0000111100001111111101===tag 11111110tag 00000011tag 11100110data 0000000000001111111100data 1110111100001110000001data 1111111111111111111111tag in 11110111 data out 1111000011110000101011Thủ tục để xác định dữ liệu trên cache1 Sử dụng set index để xác định cache set chứa dữ liệu muốn tìm.2 So sánh tag trên địa chỉ dữ liệu với tag của mỗi block trên set.Nếu giống nhau thì tiếp tục bước 3, còn không thì khẳng định làkhông có dữ lieu đó trên cache.3 Nếu valid bit của block tìm thấy bằng 1, thì block đó chính làdữ lieu cần tìm, nếu không thì không có dữ liệu đó trên cache.How is a block found if it is in the upper level?tag set index blockoffsetBlock address Block offset selects the desired data from the block.Length(Block Offset) = log2 (Cache block size) Index selects the setNumber of sets = Number of Cache blocks Number of WaysLength(Index) = log2 (Number of sets) Tag is compared against it for a hit.Length(Tag) = Length(Mem Addr – Length(Index) –Length(Block Offset)) Tag on each blockNo need to check index or block offsetIncreasing associativity shrinks index, expands tagChương 2: Hệ thống cấp bậc bộ nhớII. Kiến thức căn bản về phân cấp bộ nhớ.Writing to cache: 2 strategies (2 cách): writethroughImmediately update lower levels of hierarchy writebackOnly update lower levels of hierarchy when an updated blockis replaced Both strategies use write buffer to make writesasynchronous+ Allow the cache to proceed as soon as the data are placed inthe buffer rather than wait the full latency to write the data intomemory.Write buffer for writethroughProcessorCacheWrite BufferLowerLevelMemory Writes update cache and lowerlevel memory Cache control bit: Only a Valid bit needed Memory always has latest data, which simplifies cache coherency Can always discard cached data when a block is replaced.Write buffer for writeback Writes update cache only Cache control bit: Valid and Modified bits required Modified cached data is written back to memory when replaced Multiple writes to a cache block require only one write to memory Uses less memory bandwidth and power than writethrough More complex to implementProcessor CacheWritebufferMainmemoryAll accessesCache missesWrite Miss policyWhat happens on a write miss?Write allocate: Allocate a new block in cache Write misses act like a read miss.No Write allocate: Send data to lowerlevel memory Cache is not modified.Write back caches often use write allocate.Write through caches often use no write allocate.Chương 2: Hệ thống cấp bậc bộ nhớII. Kiến thức căn bản về phân cấp bộ nhớ. Hit: data appears in some block in the upper level (example: Block X)Hit Rate: the fraction of memory access found in the upper levelHit Time: Time to access the upper level which consists ofRAM access time + Time to determine hitmiss Miss: data needs to be retrieved from a block in the lower level (Block Y)Miss Rate = 1 (Hit Rate)Miss Penalty: Additional time required because of a miss.Hit Time 2, implementation of pure LRU is costly.v For m > 4, random replacement can be as effective as LRUChương 2: Hệ thống cấp bậc bộ nhớIII. 6 nguyên tắc tối ưu cache cơ bản1 Larger block size Reduces compulsory misses Increases capacity and conflict misses, increase miss penalty.2 Larger total cache capacity to reduce miss rate Increases hit time, increases power consumption3 Higher associativity Reduces conflict misses Increases hit time, increases power consumption4 Higher number of cache levels Reduces overall memory access time5 Giving priority to read misses over writes Reduces miss penalty6 Avoiding address translation in cache indexing Reduce hit timeChương 2: Hệ thống cấp bậc bộ nhớIII. 6 nguyên tắc tối ưu cache cơ bản1 Chọn kích thước của cache block lớn hơn Giảm thiểu compulsory misses Tăng capacity and conflict misses, tăng miss penalty.2 Chọn dung lượng cache lớn hơn để giảm miss rate Tăng hit time, tăng power consumption3 Higher associativity Giảm conflict misses Tăng hit time, tăng công suất tiêu thụ4 Tăng số lượng cache levels Giảm thời gian truy cập bộ nhớ tổng thể5 Ưu tiên read misses hơn so với writes Giảm miss penalty6 Tránh dịch địa chỉ trong cache indexing Giảm hit timeChương 2: Hệ thống cấp bậc bộ nhớIV. 10 nguyên tắc tối ưu cache nâng cao1 Small and simple first level caches to reduce Hit Time andPower Critical timing path (thời gian để truy cập bộ nhớ cache):+ Addressing the tag memory(tìm đến bộ nhớ tag trên cache)+ Comparing tags(so sánh tag)+ Setting the multiplexer to choose the correct data.(thông qua multiplexer để đọc dữ liệu ra)Address22 8Index V Tag012253254255Data V Tag Data V Tag Data V Tag Data22 324to1 multiplexorHit Data31 30 12 11 10 9 8 3 2 1 0A FourWay SetAssociative CacheChương 2: Hệ thống cấp bậc bộ nhớIV. 10 nguyên tắc tối ưu cache nâng cao1 Small and simple first level caches to reduce Hit Time andPower Directmapped caches can overlap tag compare and transmissionof data(Directmapped cache có thể thực hiện tag compare và việc đọc dữliệu ra đồng thời) Lower associativity reduces power because fewer cache lines areaccessed(Lower associativity giảm công suất vì có ít cache line hơn đượctruy cập)DirectMapped Cache DesignCACHESRAMADDRDATA31:00x00001C0 0xff083c2d010x0000000 0x000000211 0x0000000 0x0000010300100x23F0210 0x000000091V Tag Data=0x0000000 3 0DATA59 DATA58:32ADDRESS Tag DATA HIT =1SetIndex Byte OffsetL1 Size and AssociativityAccess time vs. size and associativityL1 Size and AssociativityEnergy per read vs. size and associativityChương 2: Hệ thống cấp bậc bộ nhớIV. 10 nguyên tắc tối ưu cache nâng cao2 Way prediction to reduce Hit Time(Dự đoán way trong set để giảm Hit Time) Dự đoán sai dẫn đến Hit time lớn hơn. Giảm Hit Time, Dự đoán way để chọn trước bộ chọn kênh Mux: Tính chính xác của việc dự đoán:+ > 90% for twoway+ > 80% for fourway+ Icache có độ chính xác dự đoán cao hơn Dcache Được sử dung phổ biến trong các bộ vi xử lý 2way setassociative. Được sử dung trong ARM CortexA8 với 4way set associativeChương 2: Hệ thống cấp bậc bộ nhớIV. 10 nguyên tắc tối ưu cache nâng cao3 Pipelined Cache Access to Increase Cache Bandwidth Pipelining cache write Pipelining cache readAddress22 8Index V Tag012253254255Data V Tag Data V Tag Data V Tag Data22 324to1 multiplexorHit Data31 30 12 11 10 9 8 3 2 1 0A FourWay SetAssociative CacheChương 2: Hệ thống cấp bậc bộ nhớIV. 10 nguyên tắc tối ưu cache nâng cao4 Nonblocking Cache to Increase Cache Bandwidth Nonblocking?Chương 2: Hệ thống cấp bậc bộ nhớIV. 10 nguyên tắc tối ưu cache nâng cao4 Nonblocking Cache để tăng Cache Bandwidth Nonblocking cache or lockupfree cache cho phép data cachetiếp tục với cache hits trong quá trình miss (miss penalty)Chương 2: Hệ thống cấp bậc bộ nhớIV. 10 nguyên tắc tối ưu cache nâng cao4 Nonblocking Cache để tăng Cache Bandwidth Nonblocking cache or lockupfree cache cho phép data cachetiếp tục với cache hits trong quá trình miss (miss penalty) hit under miss: Giảm effective miss penalty bằng cách tiếp tụclàm việc trong khi miss, thay vì từ chối các yêu cầu từ Core.Chương 2: Hệ thống cấp bậc bộ nhớIV. 10 nguyên tắc tối ưu cache nâng cao4 Nonblocking Cache để tăng Cache Bandwidth Nonblocking cache or lockupfree cache cho phép data cachetiếp tục với cache hits trong quá trình miss (miss penalty) hit under miss: Giảm effective miss penalty bằng cách tiếp tụclàm việc trong khi miss, thay vì từ chối các yêu cầu từ Core. hit under multiple miss or miss under miss: Giảm hơn nữaeffective miss penalty bang cách xếp chồng nhiều miss.Ví dụ: Pentium Pro cho phép xếp chồng 4 miss.Chương 2: Hệ thống cấp bậc bộ nhớIV. 10 nguyên tắc tối ưu cache nâng cao4 Nonblocking Cache để tăng Cache BandwidthCPUMiss penaltyStall CPU on missCPUMiss penaltyHit under missMissMissHitChương 2: Hệ thống cấp bậc bộ nhớIV. 10 nguyên tắc tối ưu cache nâng cao4 Nonblocking Cache để tăng Cache BandwidthCPUMiss penaltyMultiple outstanding missMissHit MissMiss penaltyMissMiss penalty(Miss under miss)Chương 2: Hệ thống cấp bậc bộ nhớIV. 10 nguyên tắc tối ưu cache nâng cao4 Nonblocking Cache để tăng Cache Bandwidth Thực thi Nonblocking cache:+ Cần outoforder execution+ Tăng độ phức tạp đáng kể cho bộ điều khiển cache.+ Cần pipelined or banked memory system.(nếu không thì không thể có nonblocking cache) Processors thông thường có thể che được miss penalty của L1,nhưng L2 thì không thể.Chương 2: Hệ thống cấp bậc bộ nhớIV. 10 nguyên tắc tối ưu cache nâng cao5 Multibanked Cache để tăng Cache Bandwidth Tổ chức bộ nhớ cache thành các bank độc lập để có thể truy cậpđồng thời.ARM CortexA8 supports 14 banks for L2Intel i7 supports 4 banks for L1 and 8 banks for L2 Đánh địa chỉ xen kẽ cho các bank theo địa chỉ của block(Sequential interleaving)Chương 2: Hệ thống cấp bậc bộ nhớIV. 10 nguyên tắc tối ưu cache nâng cao6 Critical Word First, Early Restart để giảm Miss Penalty Don’t wait for full block before restarting CPU(Không chờ đọc xong cả block trước khi cho phép CPU tiếp tục) Critical Word First: Request the missed word first+ Request missed word from memory first(Yêu cầu đọc dữ liêu bị miss trước)+ Send it to the processor as soon as it arrives(Gửi nó cho bộ xử lý ngay khi nó được đọc lên)Chương 2: Hệ thống cấp bậc bộ nhớIV. 10 nguyên tắc tối ưu cache nâng cao6 Critical Word First, Early Restart để giảm Miss Penalty Early restart+ Request words in normal order+ Send missed work to the processor as soon as it arrives Hiệu quả của phương pháp này phụ thuộc vào kích thước của cacheblock và khả năng các truy cập bộ nhớ khác cũng truy cập vào phần còn lạicủa block đó hay không.Chương 2: Hệ thống cấp bậc bộ nhớIV. 10 nguyên tắc tối ưu cache nâng cao7 Merging Write Buffer để giảm miss penalty Write buffer là để cho phép bộ xử lý (core) tiếp tục thực thi trong khichờ ghi dữ lieu vào bộ nhớ. Nếu write buffer đang chứa các block, thì địa chỉ của chúng sẽ đượckiểm tra và so sánh với địa chỉ của dữ liệu mới.+ Nếu địa chỉ dữ liệu mới không trùng với địa chỉ block nào trênwrite buffer, thì dữ liệu mới sẽ được xếp hàng và đưa vào write buffer.+ Nếu địa chỉ dữ liệu mới mà trùng với một trong các block đang cótrong write buffer thì block đó sẽ được cập nhật với dữ liệu mới đó.Without mergingWith mergingChương 2: Hệ thống cấp bậc bộ nhớIV. 10 nguyên tắc tối ưu cache nâng cao8 Compiler Optimizations để giảm miss rateKhông cần thay đổi phần cứng Loop Interchange:+ Hoán đổi các vòng lặp lồng nhau để truy cập bộ nhớ theo thứ tựliên tiếp.+ Tăng tính cục bộ không gian (spatial locality) và sử dung tối đa dữliệu đã có sẵn trên cache trước khi chúng bị thay thế.Trước loop interchange:For ( j = 0; j < 100; j++ )For (i = 0, i < 5000; i++ )xij = 2 xijSau:For (i = 0, i < 5000; i++ )For ( j = 0; j < 100; j++ )xij = 2 xijChương 2: Hệ thống cấp bậc bộ nhớIV. 10 nguyên tắc tối ưu cache nâng cao8 Compiler Optimizations để giảm miss rate Loop Interchange: Loop Fusion+ Các vòng lặp riêng biệt mà truy cập dữ liệu chung có thể hợp lạithành một vọng lặp đơn để tăng tính cục bộ về thời gian.Trước loop fusion:For ( i = 0; j < N; i++ )For (j = 0, j < 5000; j++ )aij = bij + cijFor ( i = 0; j < N; i++ )For (j = 0, j < 5000; j++ )dij = aij + cijSau:For ( i = 0; j < N; i++ )For (j = 0, j < 5000; j++ )aij = bij + cijdij = aij + cijChương 2: Hệ thống cấp bậc bộ nhớIV. 10 nguyên tắc tối ưu cache nâng cao8 Compiler Optimizations để giảm miss rate Loop Interchange Loop Fusion Blocking: tăng tính cục bộ cả không gian và thời gian.+ Các ma trận được truy cập theo cả hàng và cột và không thể đượctối ưu theo 2 cách trước.+ Dung lượng cache không đủ để chứa cả các hang và các cột.Chương 2: Hệ thống cấp bậc bộ nhớIV. 10 nguyên tắc tối ưu cache nâng cao8 Compiler Optimizations để giảm miss rate Loop Interchange Loop Fusion Blocking: tăng tính cục bộ cả không gian và thời gian.+ Các ma trận được truy cập theo cả hàng và cột và không thể đượctối ưu theo 2 cách trước.+ Dung lượng cache không đủ để chứa cả các hang và các cột.+ Tổ chức truy cập theo block hoặc ma trận nhỏ hơn.Chương 2: Hệ thống cấp bậc bộ nhớIV. 10 nguyên tắc tối ưu cache nâng cao9 Hardware prefetching để giảm miss penalty và giảm miss rate Đọc 2 block khi miss xảy ra.Pentium 4 PrefetchingChương 2: Hệ thống cấp bậc bộ nhớIV. 10 nguyên tắc tối ưu cache nâng cao10 Compiler Prefetching để giảm miss penalty và giảm miss rate Chèn vào lệnh prefetch trước khi dữ liệu được cần đến. Register prefetch+ Đọc dữ lieu vào thanh ghi Cache prefetch+ Đọc dữ lieu vào cache Kết hợp với loop unrolling và software pipeliningfor(i:=0; i

Ngày đăng: 14/08/2020, 14:27

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan