US2017132149A1PendingUtilityA1

Two address translations from a single table look-asside buffer read

71
Assignee: TEXAS INSTRUMENTS INCPriority: Jul 15, 2013Filed: Dec 20, 2016Published: May 11, 2017
Est. expiryJul 15, 2033(~7 yrs left)· nominal 20-yr term from priority
G06F 9/3867G06F 9/30145G06F 12/1009G06F 9/3802G06F 9/30014G06F 2212/602G06F 12/1045G06F 11/1048G06F 9/3822G06F 9/383G06F 9/3016G06F 9/32G06F 11/10G06F 2212/68G06F 2212/452G06F 9/345G06F 12/0875G06F 11/00G06F 9/30112G06F 9/30098G06F 12/0862G06F 2212/60G06F 12/0897H03H 17/0664G06F 9/3887G06F 9/30018G06F 9/3851G06F 9/30036G06F 15/781G06F 15/7807G06F 9/381G06F 9/325G06F 9/30072G06F 9/3856G06F 9/3009G06F 9/3004G06F 9/30032G06F 7/49915G06F 7/53G06F 9/3818G06F 17/16G06F 9/3001G06F 7/4876G06F 9/3836G06F 7/24G06F 7/487G06F 9/48H03H 17/06G06F 9/30149G06F 7/57H03H 2017/0298G06F 9/30021G06F 7/483G06F 9/30065
71
PatentIndex Score
0
Cited by
0
References
0
Claims

Abstract

A streaming engine employed in a digital data processor specifies a fixed read only data stream. An address generator produces virtual addresses of data elements. An address translation unit converts these virtual addresses to physical addresses by comparing the most significant bits of a next address N with the virtual address bits of each entry in an address translation table. Upon a match, the translated address is the physical address bits of the matching entry and the least significant bits of address N. The address translation unit can generate two translated addresses. If the most significant bits of address N+1 match those of address N, the same physical address bits are used for translation of address N+1. The sequential nature of the data stream increases the probability that consecutive addresses match the same address translation entry and can use this technique.

Claims

exact text as granted — not AI-modified
What is claimed is: 
     
         1 . An address translation unit comprising:
 an address translation table storing a plurality of entries each including a set of a first plurality of most significant virtual address bits and a set of a second plurality of most significant physical address bits;   a first comparator connected to said address generator and said address translation table, said comparator comparing said first plurality of most significant bits of said next sequential address N with said first plurality of most significant virtual address bits of each entry of said address translation table, said comparator upon detecting a match generating an entry select signal indicating which entry matched;   a multiplexer connected to said address translation table and said comparator, said multiplexer having plural input each receiving said second plurality of most significant physical address bits of a corresponding entry of said address translation table, an output and a control input receiving said entry select signal, said multiplexer outputting said second plurality of most significant physical address bits of one entry of said address translation table indicated by said entry select signal;   a first concatenator connected to said address generator and said multiplexer forming a first physical address having a second plurality of most significant bits equal to said second plurality of most significant physical address bits of said entry of said address translation table output by said multiplexer and a third plurality of least significant bits equal to said third plurality of least significant bits of said next sequential address N;   a second comparator connected to said address generator comparing said first plurality of most significant bits of said next sequential address N with said first plurality of most significant bits of said following address N+1; and   a second concatenator connected to said address generator and said multiplexer forming a second physical address having a second plurality of most significant bits equal to said second plurality of most significant physical address bits of said entry of said address translation table output by said multiplexer and a third plurality of least significant bits equal to said third plurality of least significant bits of said following address N+1.   
     
     
         2 . The address translation unit of  claim 1 , further comprising:
 a command queue storing a stream of physical memory addresses corresponding to said stream of virtual memory addresses.   
     
     
         3 . The address translation unit of  claim 2 , wherein:
 said first comparator generates an address N valid signal upon a match between said first plurality of most significant bits of said next sequential address N with said first plurality of most significant virtual address bits of one entry of said address translation table; and   said command queue is connected to said first comparator and stores a physical memory addresses corresponding address N only if said address N valid signal indicates address N is valid.   
     
     
         4 . The address translation unit of  claim 2 , wherein:
 said second comparator generates an address N+1 valid signal upon a match between said first plurality of most significant bits of said next sequential address N with said first plurality of most significant virtual address bits of following address N+1; and   said command queue is further connected to said second comparator and stores a physical memory addresses corresponding address N+1 only if said address N+1 valid signal indicates address N+1 is valid.   
     
     
         5 . The address translation unit of  claim 1 , wherein:
 if said first comparator does not detect a match between said first plurality of most significant bits of said next sequential address N with said first plurality of most significant virtual address bits of any entry of said address translation table, said first comparator requests an address translation table entry corresponding to first plurality of most significant bits of said next sequential address N from a memory.   
     
     
         6 . The address translation unit of  claim 1 , wherein:
 each entry of said address translation table further includes a permission field indicating whether a portion of memory corresponding to said entry is readable or writable; and   said first comparator detects a match only if said permission bits of said entry indicate said corresponding portion of memory is readable.   
     
     
         7 . The address translation unit of  claim 1 , wherein:
 each entry of said address translation table further includes a permission field indicating whether a portion of memory corresponding to said entry is Normal or a Device; and   said first comparator detects a match only if said permission bits of said entry indicate said corresponding portion of memory is Normal.   
     
     
         8 . The address translation unit of  claim 1 , wherein:
 each entry of said address translation table further includes a permission field indicating a security status of a portion of memory corresponding to said entry; and   said first comparator detects a match only if said permission bits of said entry indicate a security status corresponding to a current privilege execution mode.   
     
     
         9 . A digital data processor comprising:
 an instruction memory storing instructions each specifying a data processing operation and at least one data operand field;   an instruction decoder connected to said instruction memory for sequentially recalling instructions from said instruction memory and determining said specified data processing operation and said specified at least one operand;   at least one functional unit connected said instruction decoder for performing data processing operations upon at least one operand corresponding to an instruction decoded by said instruction decoder and storing results;   a streaming engine connected to said instruction decoder operable in response to a stream start instruction to recall from memory a stream of an instruction specified sequence of a plurality of data elements, said streaming engine including
 an address generator for generating stream of virtual memory addresses corresponding to said stream of an instruction specified sequence of a plurality of data elements, said stream of addresses including a next sequential address N and a following address N+1, 
 an address translation unit connected to said address generator for receiving said stream of virtual memory addresses and converting each virtual memory address into a corresponding physical memory address, said address translation unit comprising:
 an address translation table storing a plurality of entries each including a set of a first plurality of most significant virtual address bits and a set of a second plurality of most significant physical address bits, 
 a first comparator connected to said address generator and said address translation table, said comparator comparing said first plurality of most significant bits of said next sequential address N with said first plurality of most significant virtual address bits of each entry of said address translation table, said comparator upon detecting a match generating an entry select signal indicating which entry matched, 
 a multiplexer connected to said address translation table and said comparator, said multiplexer having plural input each receiving said second plurality of most significant physical address bits of a corresponding entry of said address translation table, an output and a control input receiving said entry select signal, said multiplexer outputting said second plurality of most significant physical address bits of one entry of said address translation table indicated by said entry select signal, 
 a first concatenator connected to said address generator and said multiplexer forming a first physical address having a second plurality of most significant bits equal to said second plurality of most significant physical address bits of said entry of said address translation table output by said multiplexer and a third plurality of least significant bits equal to said third plurality of least significant bits of said next sequential address N, 
 a second comparator connected to said address generator comparing said first plurality of most significant bits of said next sequential address N with said first plurality of most significant bits of said following address N+1, and 
 a second concatenator connected to said address generator and said multiplexer forming a second physical address having a second plurality of most significant bits equal to said second plurality of most significant physical address bits of said entry of said address translation table output by said multiplexer and a third plurality of least significant bits equal to said third plurality of least significant bits of said following address N+1, 
 
 a stream head register storing a data element of said stream next to be used by said at least one functional unit, 
   wherein said at least one functional unit is responsive to a stream operand instruction to receive at least one operand from said stream head register.   
     
     
         10 . The digital data processor of  claim 9 , wherein:
 said stream engine further including
 a command queue connected to said address translation unit storing a stream of physical memory addresses corresponding to said stream of virtual memory addresses. 
   
     
     
         11 . The digital data processor of  claim 10 , wherein:
 said first comparator generates an address N valid signal upon a match between said first plurality of most significant bits of said next sequential address N with said first plurality of most significant virtual address bits of one entry of said address translation table; and   said command queue is further connected to said first comparator and stores a physical memory addresses corresponding address N only if said address N valid signal indicates address N is valid.   
     
     
         12 . The digital data processor of  claim 10 , wherein:
 said second comparator generates an address N+1 valid signal upon a match between said first plurality of most significant bits of said next sequential address N with said first plurality of most significant virtual address bits of following address N+1; and   said command queue is further connected to said second comparator and stores a physical memory addresses corresponding address N+1 only if said address N+1 valid signal indicates address N+1 is valid.   
     
     
         13 . The digital data processor of  claim 9 , wherein:
 if said first comparator does not detect a match between said first plurality of most significant bits of said next sequential address N with said first plurality of most significant virtual address bits of any entry of said address translation table, said first comparator requests an address translation table entry corresponding to first plurality of most significant bits of said next sequential address N from a memory.   
     
     
         14 . The digital data processor of  claim 9 , wherein:
 each entry of said address translation table further includes a permission field indicating whether a portion of memory corresponding to said entry is readable or writable; and   said first comparator detects a match only if said permission bits of said entry indicate said corresponding portion of memory is readable.   
     
     
         15 . The digital data processor of  claim 9 , wherein:
 each entry of said address translation table further includes a permission field indicating whether a portion of memory corresponding to said entry is Normal or a Device; and   said first comparator detects a match only if said permission bits of said entry indicate said corresponding portion of memory is Normal.   
     
     
         16 . The digital data processor of  claim 9 , wherein:
 each entry of said address translation table further includes a permission field indicating a security statue of a portion of memory corresponding to said entry; and   said first comparator detects a match only if said permission bits of said entry indicate a security status corresponding to a current privilege execution mode.   
     
     
         17 . The digital data processor of  claim 9 , wherein:
 said instruction specified sequence of a plurality of data elements includes an instruction specified number of data elements having an instruction specified data size.   
     
     
         18 . The digital data processor of  claim 17 , wherein:
 said stream head register is divided into lanes of said element data size; and   said streaming engine stores one data element of said stream in each lane of said stream head register.   
     
     
         19 . The digital data processor of  claim 18 , wherein:
 if there are fewer remaining data elements than lanes of said stream head register, said streaming engine stores all 0's in excess lanes.   
     
     
         20 . The digital data processor of  claim 9 , wherein:
 said instruction specified sequence of a plurality of said data elements each have the same data size.   
     
     
         21 . The digital data processor of  claim 9 , wherein:
 said instruction specified sequence of a plurality of data elements each have an instruction specified data type.   
     
     
         22 . The digital data processor of  claim 9 , further comprising:
 a data coherence unit connected to said streaming engine and to the memory, said data coherence unit operable to assure said stream is coherent with all writes to memory before said stream start instruction.   
     
     
         23 . The digital data processor of  claim 22 , further comprising:
 said data coherence unit does not assure said stream is coherent with all writes to memory after said stream start instruction.   
     
     
         24 . The digital data processor of  claim 22 , further comprising:
 said streaming engine is responsive to a stream end instruction to stop recall of data; and   said instruction memory includes instructions controlling said at least one functional unit to avoid memory writes to memory addresses within a block of memory including said instruction specified plurality of data elements of said stream during an interval between a corresponding stream start instruction and a corresponding stream end instruction.   
     
     
         25 . The digital data processor of  claim 9 , further comprising:
 said streaming engine is responsive to a stream end instruction to stop recall of said data elements.   
     
     
         26 . The digital data processor of  claim 9 , further comprising:
 said streaming engine is responsive to recall of all data elements in said stream to stop recall of said data elements.   
     
     
         27 . The digital data processor of  claim 9 , wherein:
 said stream operand instruction includes a stream operand read only instruction and a stream operand read and increment instruction;   said at least one operational unit receiving as an operand data stored in said stream head register in response to a stream operand read only instruction and a stream operand read and increment instruction; and   said stream engine storing a next fetched data element in said stream head register in response to a stream operand read and increment instruction.   
     
     
         28 . The digital data processor of  claim 27 , further comprising:
 a data register file including a plurality of data registers designated by register number storing data;   wherein said at least one functional unit is connected to said data register file and stores said results in an instruction specified data register; and   wherein said instruction decoder is operable to
 decode an instruction having a data operand field having a first subset of bit codings to supply data stored in a corresponding data register to a corresponding functional unit, 
 decode an instruction having a data operand field having a predetermined read bit coding to supply said data stored in said stream head register to said corresponding functional unit, 
 decode an instruction having a data operand field having a predetermined read/advance bit coding to supply said data stored in said stream head register to said corresponding functional unit and to advance said streaming engine by storing a next sequential data element of said stream in said stream head register. 
   
     
     
         29 . The digital data processor of  claim 9 , further comprising:
 a level one data cache connected to said at least one functional unit temporarily storing data for manipulation by said at least one functional unit, said level one data cache servicing said at least one functional unit memory reads and writes if corresponding data is stored therein (cache hit), otherwise (cache miss) referring said at least one functional unit memory reads and writes to a higher level memory; and   a level two cache connected to said level one data cache and to said streaming engine, said level two cache temporarily storing data for manipulation by said at least one functional unit, said level two cache servicing level one data cache misses on memory reads and writes and streaming engine memory reads if corresponding data is stored therein (cache hit), otherwise (cache miss) referring said at least one functional unit memory reads and writes and streaming engine reads to a higher level memory.

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.