Այն Մեկ Հարցը, Որը Որոշում Է Տեսակը
Բջիջի ժամացույց(ներ)ի մեկ ցիկլում կարո՞ղ է զանգվածը կատարել մեկից ավել գործողություն: Ամեն ինչ մյուսը — ինչպես է այն անվանվում, ինչպես է բնութագրվում, ինչպես է օգտագործվում — բխում է այս հարցի պատասխանից:
| Տեսակ | Ժամացույցներ | RTL պորտեր | Բիթբջիջի պորտեր | Նույն ցիկլում՝ read | Նույն ցիկլում՝ write | Նույն ցիկլում՝ read & write |
|---|---|---|---|---|---|---|
| 1P SRAM | 1 — CLK |
1 հասցե / 1 տվյալ | 1 | այո (write-ի փոխարեն) | այո (read-ի փոխարեն) | ոչ |
| True 2-Port | 2 — CLKA, CLKB |
2 անկախ | 2 | այո մեկ պորտում | այո մեկ պորտում | այո — ամեն պորտում առանձին, կամ երկուսում միասին |
| Pseudo 2-Port | 1 — CLK |
2 (առանձին R և W փին) | 1 | այո | այո | ոչ իսկապես — R, ապա W նույն ժամացույցում |
| TCAM | 1 — CLK |
1 + համեմատման ավտոբուս | 1 (+ match lines) | այո (աղյուսակի հասանելիություն) | այո (գրառման թարմացում) | ոչ — compare կամ R/W, ոչ երկուսը |
| ROM | 1 — CLK |
1 հասցե / 1 տվյալի-ելք | 1 (mask / via բիթեր) | այո | ոչ | ոչ |
Հինգ Տեսակները Մեկ Հայացքով
1-Port SRAM
Մեկ ժամացույց, մեկ հասցե: Ցիկլը կամ read է, կամ write:
True 2-Port
Երկու ժամացույց, երկու պորտ: Read A-ում և write B-ում նույն ցիկլում՝ օրինական է:
Pseudo 2-Port
RTL-ում նման է 2P-ի: Մեկ ժամացույց: Ներքուստ՝ read-ապա-write (կամ write-ապա-read):
TCAM
Թանկարժեք ցիկլը compare-ն է. ամեն գրառում փնտրվում է զուգահեռաբար:
ROM
Բիթերը via- կամ mask-ծրագրավորված են: Ֆունկցիոնալ ցիկլերը միայն read են:
Յուրաքանչյուր տեսակ հանգում է նրան, թե քանի ֆիզիկական բիթբջիջի պորտ ունի և քանի ժամացույց է վարում դրանք — միայն սա է որոշում, թե ինչ կարող է տեղի ունենալ մեկ ցիկլում:
1-Port SRAM
1P SRAM-ն ունի մեկ ժամացույց և մեկ հասցեական պորտ: Ցանկացած ցիկլում կառավարիչը ակտիվացնում է կամ read enable, կամ write enable: Բիթբջիջը բացվում է մեկ անգամ. այս պորտում չեք կարող նույն ցիկլում կարդալ հին արժեքը և գրել նոր արժեք նույն (կամ այլ) բառի համար:
Ինչ կարող է լինել ցիկլը.
- Read — wordline-ը բարձրանում է, bitline-երը զարգանում են, sense amp-երն աշխատում են, տվյալը դուրս է գալիս:
- Write — wordline-ը բարձրանում է, bitline drivers-ը ուժով մտցնում է նոր բիթերը: Հաճախ երկուսից բարձր հոսանքով:
- Standby / idle — ժամացույցը կարող է շարունակել աշխատել, զանգվածը հասանելի չէ: Leakage գումարած փոքր clock-tree / decoder հոսանք:
Խառնուրդը, ինչպիսին "կեսը read ցիկլեր են, կեսը write" — վիճակագրական նկարագրություն է շատ ցիկլերի ընթացքում — ոչ թե երկու գործողություն մեկ ցիկլում:
Մեկ ժամացույց, մեկ բիթբջիջի պորտ — ամեն ցիկլ ուղիղ read է, write է կամ idle, երբեք խառնուրդ:
Կոմպայլերի անուններ. SAS*, SAC*, SAD*, երբ նաև ULS/RLS/TCS 2P չեն. նաև …ULS…1P*, …RLS…1P*, SADULS*, SASSLS*, SADCLS*: ULS + 1P դեռ 1P է: Նույնը՝ RLS + 1P-ի համար:
True 2-Port (Ռեգիստրային Ֆայլ / Dual-Port SRAM)
True 2-port-ն ունի երկու ֆիզիկական հասանելիության ուղի դեպի զանգվածը և սովորաբար երկու ժամացույց. CLKA A պորտի համար և CLKB B պորտի համար: Ժամացույցները կարող են ունենալ նույն հաճախությունը և հավասարեցված լինել, կամ լինել անկախ: Յուրաքանչյուր պորտ ունի իր հասցեն և իր read/write կառավարումը:
Երկու ժամացույցների մեկ ցիկլում (երբ դրանք համընկնում են), բջիջը կարող է.
- Read A-ում, write B-ում
- Write A-ում, read B-ում
- Read երկուսում (եթե կոմպայլերը թույլ է տալիս 2R)
- Write երկուսում (եթե կոմպայլերը թույլ է տալիս 2W — ուշադրություն դարձրեք նույն հասցեի բախումներին)
Այս միաժամանակյա զույգը read_write (dual-port) ռեժիմն է — գործողություն, որը 1P-ն ու pseudo 2-port-ը չեն կարող կատարել: Հոսանքը մոտավորապես «read գումարած write» է նույն պատուհանում, երկու ժամացույցի փինով:
Երկու անկախ բիթբջիջի պորտ, երկու ժամացույց — A և B պորտերը կարող են ամեն ցիկլում կարդալ կամ գրել, անկախաբար:
Կոմպայլերի անուններ. RLS գումարած 2P — SACRLS0G4S2P*, SACRLS0G4L2P*, SACRLS0G4U2P*, SASRLS0G0*2P*: 2P-ից առաջ եկող տառը (S / L / U) արագության / leakage bin է, ոչ թե այլ տեսակ:
Pseudo 2-Port
Pseudo 2-port-ը այն տեսակն է, որը մարդիկ շփոթում են true 2-port-ի հետ: RTL wrapper-ը բացում է read հասցե և write հասցե, որպեսզի բլոկը կարողանա տալ երկուսն էլ նույն architectural ցիկլում: Silicon-ը դեռ 1-port բիթբջիջային զանգված է մեկ ժամացույցով (CLK): Չկա CLKA / CLKB:
Ինչ իրականում տեղի է ունենում այդ մեկ ժամացույցում.
- Ներքին mux-ը սկզբում բիթբջիջը տալիս է write-ին (կամ read-ին):
- Ապա տալիս է մյուս գործողությանը:
- Դրսից նայելիս դա երևում է որպես «այս ցիկլում կարդացի և գրեցի»: Ներսում դա երկու կես-գործողություն հաջորդաբար է, ոչ թե երկու պորտ միաժամանակ:
Ահա թե ինչու բնութագրված ռեժիմը հաճախ կոչվում է pwl_read_write (piecewise-linear read-ապա-write մեկ ժամացույցում) կամ mode sequence read → write → read → write: Նույն սարքաշարային գաղափարը. մեկ ժամացույց, երկու քայլ, երբեք իսկական dual-port հոսանքի գագաթնակետ:
RTL տեսքը (վերևում) ամեն ցիկլում երևում է որպես միաժամանակյա read+write; զանգվածի ներսում (ներքևում) այն միշտ հաջորդական է — մեկ ժամացույց, երկու քայլ:
Կոմպայլերի անուններ. ULS գումարած 2P — SACULS0G4L2P*, SACULS0G4U2P*, SASULS0G4U2P*: SACULS0G4L1P*-ը չէ այս տեսակը — այդ բջիջը 1P SRAM է նույն ULS կոմպայլերից:
TCAM
Ternary CAM-ը պահում է բիթեր, որոնք կարող են լինել 0, 1 կամ X (don't care): Ցիկլը, որը այն դարձնում է CAM, compare / search-ն է. compare ավտոբուսը մղվում է ամեն բառի վրա զուգահեռաբար, match line-երն աշխատում են, հիթը (կամ հիթերի ցանկը) դուրս է գալիս: Դա SRAM read չէ — շատ ավելի շատ wordline / match line են փոխարկվում, ուստի compare-ը ամենաբարձր հոսանքի ռեժիմն է:
TCAM-ն ունի նաև սովորական read և write, որպեսզի ծրագրակազմը կարողանա տեղադրել կամ արտահանել գրառումները: Դրանք 1-port աղյուսակային հասանելիություններ են: Մեկ ժամացույցում կատարվում է մեկը.
- Compare (search)
- Գրառման read
- Գրառման write / թարմացում
Դուք չեք համեմատում և գրում աղյուսակը նույն ցիկլում: Մեկ ժամացույց (CLK):
Compare-ը գերակշռում է TCAM-ի ցիկլային խառնուրդում; աղյուսակի read/write-ը ընդհատակի, ցածր հոսանքով 1-port հասանելիություններ են, որոնք ընդմիջվում են դրա հետ:
Կոմպայլերի անուններ. TCS (օրինակ՝ SADTCS0G4L1P*) և SAHT* (hash / CAM ընտանիք որոշ node-երում):
ROM
Via-ROM-ը կամ mask-ROM-ը բիթերը ներկառուցված ունի metal-ների / via-ների մեջ: Ֆունկցիոնալ write գոյություն չունի: Մեկ ժամացույց, մեկ հասցե, տվյալի ելք: Միակ իրական աշխատանքային ռեժիմը read-ն է: Standby-ն պարզապես «read չի կատարվում»:
Write ռեժիմ ընդհանրապես գոյություն չունի — ROM ցիկլը կամ read է, կամ idle:
Կոմպայլերի անուններ. ASD*, ASDVD*: Դրանք բլոկի բջիջների ցանկերում հանդիպում են շատ ավելի հազվադեպ, քան SRAM-երը:
Աշխատանքային Ռեժիմները՝ Մանրամասն
«Ռեժիմը» մեկ բնութագրված եղանակ է, թե ինչպես է բջիջը հոսանք ծախսում մեկ ցիկլում (կամ հաջորդական մեկ զույգ քայլում): Ստորև ներկայացված անունները սովորական գրադարանային / AVM անուններն են:
| Ռեժիմ | Ինչ է անում silicon-ը այդ քայլում | Օրինական է | Նույն ցիկլում զուգակցում |
|---|---|---|---|
read / avm_read |
Մեկ wordline, sense: Տվյալ դուրս: | 1P, 2-port (ըստ պորտի), p2p (որպես մեկ քայլ), TCAM (աղյուսակային read), ROM | Մենակ 1P / ROM / TCAM-ում: True 2-port-ում կարող է հարևան լինել մյուս պորտի write-ի հետ: |
write / avm_write |
Մեկ wordline, bitline drivers-ը ուժով մտցնում է նոր տվյալ: | 1P, 2-port, p2p (որպես մեկ քայլ), TCAM (թարմացում) | Մենակ 1P / TCAM-ում: Երբեք ROM-ում: True 2-port-ում կարող է հարևան լինել մյուս պորտի read-ի հետ: |
standby / standby_trig |
Զանգվածի հասանելիություն չկա: Ժամացույցային / trigger տրամաբանությունը կարող է դեռ փոխարկվել: | 1P (երբեմն օգտագործվում է որպես երրորդ հավանականություն) | Հասանելիություն չէ: Օգտագործվում է idle ցիկլերը խառնուրդում նկարագրելու համար: |
read_write / avm_read_write |
Երկու պորտն էլ ակտիվ նույն պահին. read-ը և write-ը համընկնում են: | Միայն True 2-port | Սա հենց նույն ցիկլի R+W-ն է: Անօրինական է ULS 2P-ում կամ 1P-ում — այդ բջիջները նման վիճակ չունեն: |
pwl_read_write |
Մեկ ժամացույց: Piecewise ալիք. read հոսանք, ապա write հոսանք (կամ հակառակը), դեռ մեկ CLK եզր: |
Միայն Pseudo 2-port | RTL-ին երևում է որպես R+W: Ներքուստ՝ երկու քայլ: Ոչ նույն հոսանքի ձևը, ինչ իսկական read_write-ը: |
mode_sequence [read, write] |
Նույն p2p գաղափարը, բացահայտ ցիկլով ասված. ցիկլ N = read, ցիկլ N+1 = write, կրկնել: Կամ երկու փուլ մեկ ժամացույցում, եթե period-ը սահմանված է կես ցիկլի: | Pseudo 2-port | Մի համատեղեք pwl_read_write-ի հետ նույն բջիջում — ընտրեք մեկ նկարագրություն: |
compare / avm_compare |
Որոնման բանալին ընդդեմ ամեն գրառման: Match line-եր: TCAM-ի ամենաբարձր հոսանքը: | Միայն TCAM | Չի համատեղվում աղյուսակի write-ի հետ նույն ցիկլում: |
Ինչպես Են Ռեժիմները Երևում Ժամանակի Ընթացքում
Յուրաքանչյուր տողի հոսանքի ձևը ուղիղ բխում է իր պորտ/ժամացույց քանակից — միայն 2P-ն է ցույց տալիս երկու անկախ ատամ ցիկլում; մնացածը՝ մեկ:
Հավանականությունները Ցիկլերի Միջև Են
read = 0.5, write = 0.5 1P-ում նշանակում է. երկար ընթացքում հասանելի ցիկլերի մոտավորապես կեսը նման է read-ի, կեսը՝ write-ի: Դա չի նշանակում, որ բջիջը կարդում ու գրում է մեկ ցիկլում: standby = 0.5 ավելացնելը read 0.3 / write 0.2-ի հետ նշանակում է, որ ցիկլերի կեսը ընդհանրապես չի հասանելիանում զանգվածին:
Sequence / PWL-ը Ցիկլի Ներսում Է (P2P)
Pseudo 2-port-ում գրադարանը կամ հրապարակում է մեկ PWL ձև (read հատված գումարած write հատված մեկ CLK-ի տակ), կամ դուք գրում եք երկու հատվածները որպես sequence: Ցանկացած դեպքում կա միայն մեկ ժամացույցի փին: Հոսանքի գագաթնակետը սովորաբար ավելի ցածր և լայն է, քան true 2-port read_write-ը:
Ինչպես Կարդալ Բջիջի Անունը
Կոմպայլերը փաթեթավորում է տեսակը անվան մեջ: Առաջին 1P / 2P-ը, որը գտնվում է չափից (272X55) առաջ, պորտի դաշտն է: Ավելի ուշ C1P0-ը վերջում mux/bank կոնֆիգուրացիա է, ոչ թե պորտի քանակ:
| Token | 1P-ով | 2P-ով |
|---|---|---|
ULS | 1-port SRAM (մեկ CLK, R կամ W) | pseudo 2-port (մեկ CLK, R ապա W) |
RLS | 1-port SRAM | true 2-port (CLKA + CLKB, R և W) |
TCS / SAHT | TCAM (compare կամ R/W) | — համարեք TCAM, եթե տեսնում եք |
ASD | ROM (միայն read) | — |
հասարակ SAS / SAC / SAD | 1-port SRAM | նայեք RLS / ULS-ին, նախքան 1P ենթադրելը |
SACULS0G4L1P*-ը 1P է: SACULS0G4L2P*-ը pseudo 2-port է: SACRLS0G4L1P*-ը 1P է: SACRLS0G4U2P*-ը true 2-port է:
Cheatsheet
type clocks same-cycle access typical name
--------------------------------------------------------------------------------
1P SRAM CLK READ or WRITE SAS* SAC* SAD* *1P*
true 2-port CLKA,CLKB READ and WRITE (two ports) *RLS*2P*
pseudo 2-port CLK READ then WRITE (one port) *ULS*2P*
TCAM CLK COMPARE or READ or WRITE *TCS* SAHT*
ROM CLK READ ASD* ASDVD*
modes
read / avm_read single-port or per-port read
write / avm_write single-port or per-port write
standby / standby_trig no array access
read_write / avm_read_write true 2-port only -- both ports at once
pwl_read_write pseudo 2-port only -- R then W on CLK
sequence [read, write] same as p2p, spelled out
compare / avm_compare TCAM search