ITTO20060888A1 - "procedimento e sistema per la memorizzazione di dati, corrispondente prodotto informatico" - Google Patents

"procedimento e sistema per la memorizzazione di dati, corrispondente prodotto informatico" Download PDF

Info

Publication number
ITTO20060888A1
ITTO20060888A1 IT000888A ITTO20060888A ITTO20060888A1 IT TO20060888 A1 ITTO20060888 A1 IT TO20060888A1 IT 000888 A IT000888 A IT 000888A IT TO20060888 A ITTO20060888 A IT TO20060888A IT TO20060888 A1 ITTO20060888 A1 IT TO20060888A1
Authority
IT
Italy
Prior art keywords
data
stored
content class
val
content
Prior art date
Application number
IT000888A
Other languages
English (en)
Inventor
Rosa Manuela La
Donata Rosaria Maria Nicolosi
Giovanni Sicurella
Original Assignee
St Microelectronics Srl
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by St Microelectronics Srl filed Critical St Microelectronics Srl
Priority to IT000888A priority Critical patent/ITTO20060888A1/it
Priority to US12/001,345 priority patent/US20080147999A1/en
Publication of ITTO20060888A1 publication Critical patent/ITTO20060888A1/it

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores

Description

DESCRIZIONE dell'invenzione industriale dal titolo: "Procedimento e sistema per la memorizzazione di dati, corrispondente prodotto informatico"
di: STMicroelectronics S.r.l., nazionalità italiana, via C. Olivetti, 2 - 20041 Agrate Brianza (MI) Inventori designati: Donata Rosaria Maria NICOLOSI, Manuela LA ROSA, Giovanni SICURELLA
Depositata il: 15 dicembre 2006
* * *
TESTO DELLA DESCRIZIONE
Campo dell'invenzione
La presente invenzione si riferisce alle tecniche per la gestione dei dati nelle architetture di memoria.
L'invenzione è stata sviluppata con particolare attenzione alla possibile applicazione alle architetture di memoria di tipo non-volatile e di grandi dimensioni.
Descrizione della tecnica nota
La continua richiesta di sistemi con grande capacità di memoria di massa (con capacità dell'ordine del Terabyte ed oltre) stimola la ricerca di sempre nuove tecniche per l'immagazzinamento (memorizzazione) ed il reperimento dei dati.
La possibilità di memorizzare grossi insiemi di dati appartenenti ad ambienti informativi eterogenei fra loro apre la via ad architetture di gestione della conoscenza ad hoc. Tali architetture devono essere in grado di cooperare con sistemi di memorizzazione di massa di grandi dimensioni per cui le dimensioni dei dati sono meno critiche rispetto al tempo necessario per reperire l'informazione quando non si ha una conoscenza precisa del relativo indirizzo .
I computer tradizionali sono caratterizzati da architetture in cui la memorizzazione ed il reperimento dei dati sono realizzati tramite indirizzamento diretto o tramite tabelle contenenti informazioni relative alle collocazioni dei file.
Le applicazioni più recenti richiedono di memorizzare e di gestire quantità piuttosto rilevanti di dati quali dati alfanumerici, immagini e testo, il che comporta tempi di accesso corrispondentemente lunghi: quando le dimensioni dei dispositivi di memoria crescono risulta infatti più difficile farne un uso efficiente. Oltre ciò, quando 1'utilizzatore ricerca uno specifico dato senza conoscere in modo preciso la sua collocazione, ma conoscendo invece soltanto una parte dell'informazione (ad esempio parte di un testo oppure alcune caratteristiche del contenuto di un file) la ricerca, in particolare su un sistema di memoria di massa di dimensioni molto grandi (Very farge Mass Storage System o VLMSS), richiede un tempo molto elevato se i dati vengono ricercati in modo sequenziale.
In questo contesto diventa importante essere in grado di sviluppare nuove politiche per la memorizzazione e il reperimento dei dati.
Varie soluzioni correnti (la tecnica di impiego più corrente è il cosiddetto procedimento di inversione dei file o "inverted files method") proposte al fine di realizzare una ricerca di dati basata sul contenuto in dispositivi di memoria di massa si basano su tecniche software che in generale non sono molto efficaci.
Una soluzione hardware proposta al fine di realizzare una ricerca basata sul contenuto è costituita dalle cosiddette memorie indirizzabili sulla base del contenuto (Content Addressable Memories o CAMs). Si tratta di un particolare tipo di memoria utilizzato in quelle applicazioni in cui si deve disporre di una ricerca molto veloce. Nelle memorie per computer standard, quando 1'utilizzatore fornisce un indirizzo dì memoria, la memoria restituisce i dati immagazzinati in corrispondenza di tale indirizzo; al contrario, una CAM è progettata in modo tale per cui 1'utilizzatore fornisce i dati e la CAM svolge in parallelo una ricerca su tutta la sua memoria per vedere se i dati in questione sono immagazzinati in qualche parte nella memoria stessa. Se questi dati vengono reperiti, la CAM restituisce un elenco di uno o più indirizzi di immagazzinamento dove è stata reperita una certa parola, ed in talune architetture restituisce anche i dati o altri elementi di dati associati. Le operazioni di ricerca nell'ambito di una CAM sono svolte in ampia misura in parallelo sull'intera memoria in una sìngola operazione, che risulta quindi molto più rapida di quanto accade in una memoria ad accesso casuale (Random Access Memory o RAM) . Nei confronti degli approcci di tipo algoritmico, il punto di forza delle CAM sta dunque nel throughput di ricerca molto elevato.
Tuttavia le CAM non vanno esenti da vari inconvenienti.
Il primo di questi è dato dal costo, dal momento che ciascun singolo bit di memoria in una CAM
completamente parallela deve avere associato un rispettivo circuito di confronto così da poter rilevare una corrispondenza fra il bit memorizzato ed il bit utilizzato come dato di ingresso per la ricerca .
Oltre a questo, le uscite indicative di una corrispondenza provenienti da ciascuna cella in una parola dati devono essere combinate così da fornire un segnale completo di corrispondenza della parola dati. Il relativo circuito addizionale incrementa le dimensioni fisiche del chip della CAM e, in modo conseguente, i costi di fabbricazione. Un collo di bottiglia molto critico è poi rappresentato dall'elevato consumo di potenza dovuto alla elevata quantità di circuiti di confronto attivati in parallelo su ciascun ciclo di clock.
In conseguenza di ciò, le CAM sono utilizzate soltanto in applicazioni speciali in cui la velocità di ricerca richiesta non può essere conseguita utilizzando tecniche meno costose. Le CAM non si prestano quindi in generale a realizzare circuiti VLMSS ed in più utilizzano hardware per completare la ricerca in un singolo ciclo, il che dà origine ad una complessità costante nel tempo di tipo 0(1).
Veduta l'aggiunta del circuito di confronto per ciascuna cella di memoria hardware, per ottenere un bilanciamento diverso fra velocità, dimensioni di memoria e costo, alcune forme di attuazione emulano la funzione di una CAM implementando una normale ricerca ad albero oppure ricorrendo a soluzioni hardware che si basano sulla replica o l'adozione di strutture pipeline per aumentare le prestazioni, secondo criteri spesso utilizzati nei router.
Il documento US-B-6 831 850 descrive un procedimento ed un dispositivo in cui un dispositivo CAM è ripartito in blocchi ed in cui si indirizzano in modo selettivo, tramite un circuito di selezione, soltanto quei blocchi appartenenti ad una classe o tipo corrispondente a quello dei dati che si ricercano. Di conseguenza, la ricerca viene effettuata soltanto sui blocchi della CAM di volta in volta abilitati, riducendo l'assorbimento di potenza.
Questa soluzione è strettamente riferita ai dispositivi CAM e di conseguenza non se ne può proporre l'adozione per sistemi di memoria di massa di dimensioni molto elevate, dal momento che - in ogni caso - sarebbe richiesta una circuiteria di confronto troppo costosa, anche se destinata ad essere utilizzata solo parzialmente durante ciascuna operazione di ricerca. Inoltre, l'operazione di memorizzazione non è di tipo adattativo in funzione del contenuto dei dati da memorizzare. L'associazione degli indici è determinata in modo statico a seconda dell'ampiezza dei dati.
La soluzione descritta in US-A-2004/193740 permette di memorizzare dati in una fra una pluralità di diverse risorse di memorizzazione che presentano nei confronti dell'utilizzatore diverse caratteristiche di capacità, accessibilità e funzionalità. In maggior dettaglio, la memorizzazione dei dati avviene in vari dispositivi diversi quali ad esempio dispositivi di memoria online (dischi di vario tipo), dispositivi di immagazzinamento di tipo quasi on-line (ad esempio dischi ottici che risiedono su un juke-box oppure nastri di una libreria di nastri), e dispositivi off-line. Tutto questo avviene però sulla base di un azionamento manuale dei dispositivi di immagazzinamento e delle relative unità di pilotaggio da parte di un operatore umano. In questa soluzione secondo la tecnica nota il meccanismo di memorizzazione non è adattativo e, in più, il sistema è essenzialmente condizionato dalle esigenze di memorizzazione e non di reperimento intelligente dei dati.
Scopo e sintesi della soluzione qui descritta. Da quanto detto in precedenza, emerge con chiarezza l'esigenza di disporre di soluzioni ulteriormente perfezionate che consentano, nell'ambito di un sistema di memoria di massa di grandi dimensioni, di realizzare operazioni di memorizzazione e di reperimento dei dati sia sulla base di indirizzi, sia sulla base del contenuto, il tutto permettendo una completa compatibilità con i sistemi esistenti.
La presente invenzione si prefigge lo scopo di fornire una tale soluzione perfezionata.
Secondo la presente invenzione, tale scopo è conseguito con un procedimento secondo la rivendicazione 1. Vantaggiosi sviluppi dell'invenzione formano oggetto delle sotto rivendicazioni. L'invenzione riguarda anche una corrispondente architettura di sistema, nonché un prodotto informatico direttamente caricabile nella memoria di almeno un elaboratore elettronico e comprendente porzioni di codice software per realizzare le fasi del procedimento secondo 1'invenzione quando il prodotto è eseguito su un elaboratore elettronico. Così come qui utilizzato, il riferimento ad un tale prodotto informatico deve qui intendersi equivalente al riferimento ad un mezzo leggibile da elaboratore elettronico e contenente istruzioni per controllare un sistema elaboratore elettronico per coordinare l'attuazione del procedimento secondo l'invenzione. Il riferimento ad "almeno un elaboratore elettronico" è evidentemente destinato a mettere in luce la possibilità di attuare la presente invenzione in forma distribuita o modulare.
Le rivendicazioni formano parte integrante dell'insegnamento tecnico qui somministrato in relazione all'invenzione.
In sostanza, nella forma di attuazione al momento preferita, la soluzione qui descritta consente di realizzare la memorizzazione ed il reperimento di dati tanto sulla base di indirizzi quanto sulla base del contenuto. Il tutto assicurando la completa compatibilità con sistemi di memorizzazione tradizionali.
In particolare, sempre nella forma di attuazione al momento preferita, la soluzione qui descritta prevede l'utilizzazione di tre parti fondamentali: un sistema di memorizzazione di massa di elevate dimensioni (ad es. VLMSS), un'unità per la gestione della memorizzazione (Storage Management Unit o SMU) ed una memoria associativa (Associative Memory o AM) . Un sistema VLMSS è essenzialmente un sistema per la memorizzazione di dati di tipo esteso con una partizione logica in blocchi indirizzati tramite un indice. La partizione può essere di tipo gerarchico. L'unità di gestione SMU è in grado di realizzare operazioni di lettura e scrittura nel sistema VLMSS utilizzando gli indici di memorizzazione generati dalla memoria associativa. La memoria associativa è un'unità intelligente che correla l'informazione immagazzinata con delle locazioni nel sistema VLMSS e modifica la sua struttura in modo adattativo secondo i dati ricevuti. Facendo riferimento a ciascun dato da memorizzare nel sistema VLMSS come una voce o entry, la memoria associativa genera un indice di memorizzazione tanto in base a ciascuna nuova voce, quanto secondo i dati immagazzinati in precedenza. L'unità di gestione prende come ingressi gli indici di memorizzazione generati dalla memoria associativa, li traduce negli indirizzi fisici dei blocchi e, evitando la collisione con locazioni di memorizzazione occupate, mette in atto la procedura di scrittura nel sistema VLMSS. L'operazione di ricerca può essere condotta utilizzando tanto l'indirizzo della locazione quanto adottando meccanismi di reperimento basati sulla conoscenza (knowledge aided) in cui l'indice di memorizzazione di ingresso o entry è identificato dalla memoria associativa, che trasferisce questa informazione all'unità della gestione della memorizzazione. Questa unità avvia le operazioni di ricerca e reperimento dei dati nel sistema VLMSS. Quando l'indirizzo è noto, l'accesso ai dati avviene in base all'indirizzo secondo politiche di memorizzazione/reperimento basate su un indirizzo. Tuttavia, la politica di memorizzazione adottata nella soluzione qui descritta regola la gestione dei dati e rende più efficiente il reperimento dei dati stessi quando non è disponibile una precisa informazione relativa alla collocazione dei dati nel sistema VLMSS.
Se confrontata con la tecnica nota, la soluzione qui descritta introduce una soluzione innovativa per memorizzare e reperire i dati in modo adattativo nell'ambito di un dispositivo di memoria di massa di dimensioni molto rilevanti. In sostanza, lo spazio
considerato come un insieme di blocchi di dimensioni
predeterminate. I dati sono memorizzati a seconda del loro contenuto e, in particolare, dati con caratteristiche comuni sono memorizzati nello stesso blocco del dispositivo di memoria di massa. In modo corrispondente, il reperimento dei dati nell'ambito del dispositivo di memoria di massa, quando non si ha disponibilità dell'informazione completa relativa all'indirizzo, può essere attuato ricercando nell'ambito dei soli blocchi che contengono dati con le stesse caratteristiche dei dati che si ricercano. In questo modo è possibile ridurre il tempo di reperimento dei dati in tutte quelle applicazioni in cui un tempo di ricerca ridotto costituisce una caratteristica particolarmente importante.
Breve descrizione delle rappresentazioni annesse L'invenzione sarà ora descritta, a puro titolo di esempio non limitativo, con riferimento alle rappresentazioni annesse, in cui:
- la figura 1 è uno schema a blocchi generale dell'architettura secondo la soluzione qui descritta,
la figura 2 è rappresentativa dello svolgimento di una generica operazione di memorizzazione di dati nell'ambito della struttura
della figura 1,
la figura 3 è un diagramma di flusso dell'operazione di memorizzazione dei dati,
- la figura 4 è esemplificativa di una possibile organizzazione dei dati a livello di metadati,
la figura 5 illustra schematicamente l'operazione di reperimento dei dati nella soluzione qui descritta,
la figura 6 è un diagramma di flusso corrispondente all'operazione di reperimento dei dati rappresentata nella figura 6,
la figura 7 illustra un esempio di memorizzazione dei dati e aggiornamento dell'indice associato al blocco, e
-la figura 8 è un diagramma di flusso corrispondente all'esempio mostrato in figura 7.
Descrizione particolareggiata di esempi di attuazione preferiti.
Nel seguito sono descritti alcuni esempi di soluzioni per la memorizzazione ed il reperimento dei dati suscettibili di essere implementate tanto a livello hardware quanto a livello ibrido software/hardware. Il tutto superando le limitazioni intrinseche delle soluzioni secondo la tecnica nota a cui si è fatto cenno nella parte introduttiva della presente descrizione.
In sostanza, secondo la soluzione schematicamente illustrata nella figura 1, un sistema per la memorizzazione ed il reperimento di dati, indicato complessivamente con 10, comprende essenzialmente tre elementi, ossia:
un sistema di memoria di massa 20 di dimensioni molto elevate (ad esempio dell'ordine del Terabyte}, del tipo correntemente denominato VLMSS (Very Large Mass Storage System);
- un'unità per la gestione dell'immagazzinamento (Storage Management Unit o SMU) 30, e
- una memoria associativa (Associative Memory o AM), indicata con il riferimento 40.
Si assumerà in generale che i dati da memorizzare (quali essi siano) affluiscano verso il sistema 10 attraverso l'unità 30.
Nell'ambito dell'unità 30, oltre ad un'unità di lettura scrittura (R/W) di tipo tradizionale, indicata con 50, è presente un blocco 60 che (operando in modo di per sé noto, ad esempio tramite operazioni di parsing o similari) è in grado di estrarre alcune caratteristiche tipiche dei dati in ingresso.
In linea di massima, per semplificare la trattazione (naturalmente senza che ciò debba essere interpretato in senso limitativo della portata dell'invenzione), si può supporre che i dati in ingresso abbiano in qualche modo associati dei "metadati" (metadata) rappresentativi del contenuto dei dati nel loro complesso.
Naturalmente, in una forma di attuazione al momento meno preferita, si può anche pensare che i suddetti metadati, invece di essere presenti nei dati in ingresso così da poter essere estratti attraverso il blocco 60, siano inseriti (da un blocco di inserimento non specificatamente illustrato, che può essere considerato di fatto compreso nell'unità 30) nei dati in ingresso nel momento in cui gli stessi sono introdotti nel sistema 10.
Quale che sia la specifica soluzione adottata, i suddetti metadati, indicati generalmente con MD sono inviati verso la memoria associativa 40 che li valuta operando come un classificatore. In pratica, la memoria associativa 40 riceve i metadati e classifica i dati in ingresso assegnando agli stessi un indice identificatore di classe (ad esempio - si sottolinea che questo è solo un esempio, che non va quindi interpretato in senso limitativo della portata dell'invenzione) tale identificatore può essere costituito dal centroide C. Tale indice rappresenta l'elemento identificativo di un gruppo di informazioni memorizzate o da memorizzare e quindi non necessariamente coincide con una di esse. Il valore di tale indice C è ottenuto da una elaborazione delle informazioni contenute nel blocco da esso indicizzato.
Un semplice esempio chiarificatore è mostrato in figure 7 e 8 dove l'identificatore è costituito dal valor medio tra l'indice C_val presente ed il nuovo valore C_new associato all'informazione da memorizzare .
In modo specifico, nella figura 7, ID indica i dati d'ingresso (Input Data), ME l'operazione di estrazione dei metadati (Metadata Extraction) e C_new indica complessivamente il risultato (16 bit input data (C new)).
Nella figura 8 il blocco 300 rappresenta invece la valutazione di C_new, mentre il blocco 302 indica un'operazione di ricerca tabellare diretta a scegliere l'indice "b" con valore di centroide C_val con la minima distanza dal valore in ingresso C new.
Il blocco 304 indica invece l'operazione di aggiornare Cval(b) con il valore medio
C_val (b) = (C_val(b)+ C_new)/2.
Infine il blocco 306 indica la fine di questo processo .
Il blocco di memoria associativa 40 può essere realizzato tanto a livello software quanto a livello hardware. Ad esempio, volendosi rifare a soluzioni software, si può ricorrere a tecniche di clustering che implementano procedimenti del tipo di quelli noti come C-Means o K-Means, così come descritti, ad esempio, in:
- J.C. Bezdek: "Pattern Recognition with Fuzzy Objective Function Algorithms", New York: Plenum Press, 1981.
C.M. Bishop: "Neural Networks for Pattern Recognition", Oxford, England: Oxford University Press, 1991, Cap. 5.
In alternativa, l'azione di clustering può essere realizzata tramite un dispositivo hardware che realizza per esempio una cosiddetta "motor map" così come illustrato, ad esempio in H. Ritter, et al.: "Neural Computation and Self-Organizing Maps", Reading MA: Addison-Wesley, 1992. Quali che siano le specifiche soluzioni adottate, 1'ingresso è di solito valutato come un vettore e il risultato dell'operazione di trattamento svolta dalla memoria associativa 40 si presenta anch'essa sotto forma di un vettore di uscita C (ad esempio un vettore di centroidi) che viene restituito all'unità 30 per essere associato ai dati in ingresso.
In questo modo, i dati possono essere memorizzati nel dispositivo di memoria di massa 20 secondo un valore di indice. In particolare, ciascuna classe identificata nell'ambito dei dati a livello di metadati corrisponde ad un certo blocco Bi. Di conseguenza, nell'ordinare i dati che sono memorizzati nel dispositivo 20, l'unità 30 tiene in conto i suddetti indici ricercando il blocco corrispondente all'indice che di volta in volta è stato valutato dalla memoria associativa 40.
Si possono evidentemente determinare almeno due casi.
Nel primo caso l'indice è reperito in una tabella 70 accessibile dall'unità 30 in cui sono elencati in modo coordinato gli indici (valori di centroide C (C_VAL) in corrispondenza del numero di blocco B (Bj.) ). In questo caso, l'unità 30 legge semplicemente il numero del blocco Bi, controlla nell'elenco degli indirizzi liberi nell'ambito del dispositivo 20 qual è il primo indirizzo disponibile nell'ambito del blocco selezionato ed immagazzina il singolo dato (entry) in corrispondenza di tale indirizzo .
Se il valore dell'indice non è reperibile all'interno della tabella 70, l'unità 30 sceglie un valore di indice quanto più vicino possibile a quello valutato e svolge l'operazione di memorizzazione nel blocco corrispondente secondo la procedura descritta in precedenza. In questo caso, il valore dell'indice è aggiornato tenendo in conto il valore nuovo (ad esempio calcolando il valore medio).
In questo modo la tabella di riferimento 70 non è statica, ma cambia secondo i dati memorizzati. In entrambi i casi si realizzano normali operazioni di scrittura, quale quella nota come tabella di allocazione dei file (File Allocation Table o FAT) e l'aggiornamento della tabella degli spazi liberamente disponibili.
Il diagramma di flusso della figura 3 illustra in maggior dettaglio la sequenza di operazioni svolte durante la memorizzazione dei dati.
In particolare, nella figura 3, il blocco 100 indica un file in ingresso, mentre il blocco 102 indica in generale l'operazione di estrazione dei metadati destinati ad essere passati alla memoria associativa 40 per valutare, in un passo 104, i corrispondenti identificatori (ad esempio i centroidi). Il blocco 106 rappresenta l'operazione di ricerca del valore del centroide nella tabella blocchi /centroidi.
Il passo 108 corrisponde alla verifica di cui si è già detto in precedenza, ossia alla verifica del fatto che il valore di centroide sia presente nella tabella .
In caso negativo, in un passo 110 si procede ad estrarre il numero di blocco con un valore dì centroide quanto più prossimo al valore stimato procedendo infine nel passo 112 all'aggiornamento della tabella blocchi/centroidi.
Al contrario, se il passo 108 da esito positivo, si procede, in un passo 114, ad estrarre il numero del blocco dalla tabella.
Quale che sia la via seguita, in un passo 116 si procede a leggere dall'elenco degli indirizzi disponibili, il primo indirizzo disponibile del blocco selezionato, così da procedere quindi, in un passo 118, a scrivere il file di dati in corrispondenza dell'indirizzo selezionato. Tutto questo per procedere infine, in un passo 120, all'aggiornamento della tabella di allocazione dei file (FAT).
Per maggiore chiarezza di rappresentazione i passi 112, 116, 118 e 120 sono stati rappresentati anche sotto forma di frecce rappresentative dei corrispondenti flussi informativi nella figura 2.
La figura 4 rappresenta un esempio di operazione di memorizzazione dei dati illustrata con specifico riferimento ad un'applicazione in cui i dati di ingresso sono costituiti da un file di immagine che contiene dei "meta data tag" di tipo "exif". I tag contenuti nello standard exif sono ricchi dì informazioni relative all'immagine (ad esempio data, ora, regolazioni della fotocamera, eccetera). Questi metadati possono essere estratti dal blocco 60 per essere alimentati alla memoria associativa 40 che classifica i dati di ingresso assegnando agli stessi i corrispondenti valori di indice (ad esempio il centroide). L'unità 30 ricerca questo valore nella tabella centroidi/blocchi e realizza l'operazione descritta in precedenza per il caso generale.
Una volta che i dati siano stati memorizzati così come descritto in precedenza, tali dati possono essere ricercati - quando lo si desideri - secondo due procedimenti diversi.
Queste due modalità di funzionamento possibile sono rappresentate in modo coordinato dalle figure 5 e 6.
Supponendo di partire da un file di ingresso rappresentato dal blocco 200, in un passo 202 si procede a verificare se 1'utilizzatore dispone dell'informazione relativa all'indirizzo dei dati da ricercare .
In caso di esito positivo (l'indirizzo è noto), in un passo 204 l'indirizzo fisico dei dati che viene letto dalla tabella di allocazione dei file (FAT) e, in un passo 206, i dati vengono ritrovati in modo diretto.
Se, al contrario, 1'utilizzatore dispone soltanto di informazioni incomplete relative ai dati che vuole ricercare (esito negativo del passo 202}, tale informazione, resa disponibile essenzialmente sotto forma di un file metadati in un passo 208, è sottoposta in un passo 210 ad una valutazione di indice da parte della memoria associativa.
A seconda del valore ritrovato, in un passo 212 si ricerca il valore del centroide nella tabella blocchi/centroidi ed in un passo 214 si procede a verificare se il valore di centroide è registrato nella tabella.
In caso positivo, in un passo 216 l'unità 30 comincia a ricercare i dati nel blocco corrispondente, realizzando la ricerca all'interno dell'intero blocco fino a quando trova il file desiderato .
Se il passo 214 dà invece esito negativo, si sceglie un altro blocco secondo una regola predefinita (ad esempio il blocco con il valore di indice più vicino) e, in un successivo passo 218 l'operazione di ricerca viene realizzata all'interno di tale blocco.
Se i dati ricercati sono stati localizzati (esito positivo di un passo di verifica indicato con 220), il sistema evolve verso il passo 206 corrispondente all'avvenuto ritrovamento dei dati.
Se, al contrario, il file ricercato non viene trovato nel blocco sottoposto a ricerca (esito negativo del passo 220), l'unità 30 avvia un procedimento ricorsivo di scansione degli altri blocchi (secondo un criterio predefinito, ad esempio considerando l'indice in ordine discendente rispetto a quello valutato).
Nel diagramma di flusso della figura 6 il passo 222 corrisponde alla verifica del fatto se tutti i blocchi siano stati effettivamente controllati. Tale verifica dà esito negativo sino a quando esistono ancora blocchi da controllare (senza che il dato sia stato reperito, quindi con esito negativo del passo 220) . L'esito positivo del passo 222 indica che tutti i blocchi sono stati sottoposti a verifica per cui il sistema evolve verso un passo finale indicato con 224. Questo modo di procedere corrisponde essenzialmente ad un caso peggiore in cui l'unità 30 in pratica sottopone a scansione tutti i blocchi di memoria, il che corrisponde però semplicemente al funzionamento di un normale sistema di memoria secondo la tecnica nota.
Per ciò che riguarda il blocco 208 della figura 6 si può pensare, ad esempio, che 1'utilizzatore voglia ricercare una particolare immagine senza però sapere dove il corrispondente file è stato memorizzato e disponendo soltanto di informazioni parziali quali, ad esempio, la data di creazione del file e le regolazioni di una fotocamera. Questa informazione disponibile può essere quindi utilizzata come informazione di ingresso per il modulo 60 che è in grado di utilizzare questi metadati come ingresso del classificatore della memoria associativa 40 che è in grado di restituire il corrispondente valore di indice (centroide).
La soluzione qui descritta è destinata ad essere applicata in modo particolarmente vantaggioso a sistemi di memoria di massa di dimensioni molto grandi in cui si vuole disporre di un'operazione di reperimento dei dati efficiente anche nei casi in cui non si abbia a disposizione un'informazione precisa sulla locazione dei dati. Il dispositivo di memoria di massa, anche se qui si è fatto riferimento specifico a un cosiddetto VLMSS, può essere un qualunque dispositivo di memoria di massa.
Naturalmente, la soluzione qui descritta si dimostra particolarmente vantaggiosa quando il sistema di memoria di massa abbia dimensioni particolarmente elevate. Un altro vantaggio della soluzione descritta, se confrontata rispetto alla tecnica nota, è data dalla sua intrinseca capacità di immagazzinare informazione attraverso un processo adattativo basato sul contenuto integrato nell'architettura del dispositivo di memoria di massa. Ciò permette in generale di svolgere operazioni di ricerca efficienti e meno costose in termini di tempo. Come si è visto, i dati con contenuto simile sono immagazzinati negli stessi blocchi del dispositivo di memoria 20 e pertanto la loro ricerca può essere effettuata direttamente proprio in quei blocchi e non in altri. L'elenco che contiene la corrispondenza fra i blocchi (Bi) e l'indice associato (C_VAL) è aggiornato ogni volta che nuovi dati vengono registrati nel blocco tenendo in considerazione le caratteristiche (ossia l'indice) dei dati in ingresso.
Fermo restando il principio dell'invenzione, i particolari di realizzazione e le forme di attuazione potranno variare, anche in modo significativo, rispetto a quanto qui illustrato a puro titolo di esempio non limitativo, senza per questo uscire dall'ambito dell'invenzione, così come definito dalle rivendicazioni annesse.

Claims (15)

  1. RIVENDICAZIONI 1. Procedimento per memorizzare e reperire dati, comprendente le operazioni di: provvedere un dispositivo (20} dì memorizzazione con una pluralità di blocchi di memoria (Bj.), - organizzare i dati da memorizzare in classi in funzione del loro contenuto, associando ai dati così organizzati identificatori di classe di contenuto {C_VAL), - memorizzare i dati in detto dispositivo di memorizzazione (20) ad indirizzi dati in detti blocchi di memoria (Bi) in funzione di detti identificatori di classe di contenuto (C VAL), per cui i dati con associato un dato identificatore di classe di contenuto (C_VAL) sono memorizzati in almeno un blocco corrispondente, e reperire i dati memorizzati in detto dispositivo di memorizzazione (20): (i) se l'indirizzo di memorizzazione è disponibile, reperendo i dati in corrispondenza dei rispettivi indirizzi di memorizzazione, o (ii) se l'indirizzo di memorizzazione non è disponibile, ricercando i dati in funzione dei corrispondenti identificatori di classe di contenuto (C_VAL) conducendo la ricerca nei blocchi di memoria (Bi) corrispondenti a detti identificatori di classe di contenuto (C_VAL).
  2. 2. Procedimento secondo la rivendicazione 1, comprendente l'operazione di ricercare nei dati da memorizzare metadati indicativi delle rispettive classi di contenuto.
  3. 3. Procedimento secondo la rivendicazione 2, comprendente l'operazione di derivare detti identificatori di classe di contenuto (C_VAL) a partire da detti metadati tramite un meccanismo di memoria associativa (40).
  4. 4. Procedimento secondo la rivendicazione 1, comprendente l'operazione di associare ai dati da memorizzare metadati indicativi delle rispettive classi di contenuto.
  5. 5. Procedimento secondo una qualsiasi delle precedenti rivendicazioni, in cui, quali identificatori di classe di contenuto si utilizzano i centroidi di detti dati da memorizzare.
  6. 6. Procedimento secondo una qualsiasi delle precedenti rivendicazioni, comprendente l'operazione di creare una tabella di corrispondenza fra identificatori di classe di contenuto (C_VAL) e blocchi (Bi) in detto dispositivo di memorizzazione (20).
  7. 7. Procedimento secondo la rivendicazione 6, comprendente l'operazione di ricercare in detta tabella, in fase di memorizzazione dei dati, un blocco (Bi) corrispondente all'identificatore di classe di contenuto dei dati al momento memorizzati e l'operazione di memorizzare i dati in detto blocco così identificato in detta tabella.
  8. 8. Procedimento secondo la rivendicazione 6, comprendente l'operazione di ricercare in detta tabella, in fase di memorizzazione dei dati, un blocco (Bi) corrispondente all'identificatore di classe di contenuto dei dati al momento memorizzati e, se detta tabella non contiene un identificatore di classe di contenuto corrispondente alla classe di contenuto dei dati memorizzati, l'operazione di determinare un identificatore di classe di contenuto non ancora contenuto in detta tabella e memorizzare detti dati nel blocco corrispondente.
  9. 9. Architettura di sistema per memorizzare e reperire dati con un dispositivo (20) di memorizzazione organizzato in una pluralità di blocchi, il sistema comprendendo almeno un circuito classificatore (40, 60) per organizzare i dati da memorizzare in classi in funzione del loro contenuto, associando ai dati così organizzati identificatori di classe di contenuto (C_VAL), per cui i dati sono memorizzabili in detto dispositivo di memorizzazione (20) ad indirizzi dati in detti blocchi di memoria (Bi) in funzione di detti identificatori di classe di contenuto (C_VAL), con i dati con associato un dato identificatore di classe di contenuto (C_VAL) memorizzati in almeno un blocco corrispondente; i dati memorizzati in detto dispositivo di memorizzazione (20) essendo reperibili : (i) se l'indirizzo di memorizzazione è disponibile, reperendo i dati in corrispondenza dei rispettivi indirizzi di memorizzazione, o (ii) se l'indirizzo di memorizzazione non è disponibile, ricercando i dati in funzione dei corrispondenti identificatori di classe di contenuto (C_VAL) conducendo la ricerca nei blocchi di memoria (Bi) corrispondenti a detti identificatori di classe di contenuto (C_VAL).
  10. 10. Architettura secondo la rivendicazione 9, comprendente un blocco (60) di ricerca di classe di contenuto per ricercare nei dati da memorizzare metadati indicativi delle rispettive classi di contenuto.
  11. 11. Architettura secondo la rivendicazione 10, in cui detto blocco (60) di ricerca di classe di contenuto comprende una memoria associativa (40).
  12. 12. Architettura secondo la rivendicazione 9, comprendente un blocco inseritore di metadati per inserire nei dati da memorizzare metadati indicativi delle rispettive classi di contenuto.
  13. 13. Architettura secondo una qualsiasi delle precedenti rivendicazioni 9 a 12, in cui, quali identificatori di classe di contenuto si utilizzano i centroidi di detti dati da memorizzare.
  14. 14. Architettura secondo una qualsiasi delle precedenti rivendicazioni 9 a 13, comprendente una tabella di corrispondenza fra identificatori di classe di contenuto (C_VAL) e blocchi (Bi) in detto dispositivo di memorizzazione (20).
  15. 15. Prodotto informatico caricabile nella memoria di almeno un elaboratore e comprendente porzioni di codice software per realizzare le fasi del procedimento secondo una qualsiasi delle rivendicazioni 1 a 8.
IT000888A 2006-12-15 2006-12-15 "procedimento e sistema per la memorizzazione di dati, corrispondente prodotto informatico" ITTO20060888A1 (it)

Priority Applications (2)

Application Number Priority Date Filing Date Title
IT000888A ITTO20060888A1 (it) 2006-12-15 2006-12-15 "procedimento e sistema per la memorizzazione di dati, corrispondente prodotto informatico"
US12/001,345 US20080147999A1 (en) 2006-12-15 2007-12-10 Method and system for data storage, and corresponding computer-program product

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
IT000888A ITTO20060888A1 (it) 2006-12-15 2006-12-15 "procedimento e sistema per la memorizzazione di dati, corrispondente prodotto informatico"

Publications (1)

Publication Number Publication Date
ITTO20060888A1 true ITTO20060888A1 (it) 2008-06-16

Family

ID=39529010

Family Applications (1)

Application Number Title Priority Date Filing Date
IT000888A ITTO20060888A1 (it) 2006-12-15 2006-12-15 "procedimento e sistema per la memorizzazione di dati, corrispondente prodotto informatico"

Country Status (2)

Country Link
US (1) US20080147999A1 (it)
IT (1) ITTO20060888A1 (it)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130097196A1 (en) * 2010-06-23 2013-04-18 Masaru Fuse Data management device and data management method

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4045781A (en) * 1976-02-13 1977-08-30 Digital Equipment Corporation Memory module with selectable byte addressing for digital data processing system
US5383146A (en) * 1992-06-08 1995-01-17 Music Semiconductors, Inc. Memory with CAM and RAM partitions
EP0859366A1 (en) * 1997-02-12 1998-08-19 STMicroelectronics S.r.l. Associative memory device with optimized occupation, particularly for the recognition of words
US6078743A (en) * 1997-11-24 2000-06-20 International Business Machines Corporation Generic IDE interface support for scripting
US6542391B2 (en) * 2000-06-08 2003-04-01 Netlogic Microsystems, Inc. Content addressable memory with configurable class-based storage partition
US7193997B2 (en) * 2001-03-19 2007-03-20 International Business Machines Corporation Packet classification

Also Published As

Publication number Publication date
US20080147999A1 (en) 2008-06-19

Similar Documents

Publication Publication Date Title
RU2686590C1 (ru) Способ и устройство для сравнения схожих элементов высокоразмерных признаков изображений
Kumar et al. Advanced algorithms for fast and scalable deep packet inspection
Dupont Incremental regular inference
Muja et al. Fast matching of binary features
US9509809B2 (en) Packet classification using multiple processing units
Jia et al. Optimizing kd-trees for scalable visual descriptor indexing
US8572140B1 (en) Deterministic lookup using hashed key in a multi-stride compressed trie structure
CN102156751B (zh) 一种提取视频指纹的方法及装置
US20030093613A1 (en) Compressed ternary mask system and method
CA2291310C (en) Generating searchable data entries and applications therefore
Chang et al. Selective block minimization for faster convergence of limited memory large-scale linear models
CN113642547B (zh) 一种基于密度聚类的无监督域适应人物重识别方法及系统
CN109271621A (zh) 语义消歧处理方法、装置及其设备
CN105389266B (zh) 一种数据管理方法及装置
US7739445B1 (en) Circuit, apparatus, and method for extracting multiple matching entries from a content addressable memory (CAM) device
US9639549B2 (en) Hybrid of proximity and identity similarity based deduplication in a data deduplication system
Cissé et al. Learning compact class codes for fast inference in large multi class classification
KR102219948B1 (ko) 메모리에 저장된 데이터 검색 방법 및 시스템
US9838598B2 (en) Image identification system and image storage control method
ITTO20060888A1 (it) "procedimento e sistema per la memorizzazione di dati, corrispondente prodotto informatico"
Hünemörder et al. Towards a learned index structure for approximate nearest neighbor search query processing
Gu et al. Unsupervised deep triplet hashing with pseudo triplets for scalable image retrieval
Hayes-Roth Representation of structured events and efficient procedures for their recognition
US20070255676A1 (en) Methods and apparatus for performing tree-based processing using multi-level memory storage
Bhattacharya et al. New wine in an old bottle: data-aware hash functions for bloom filters