1. 存儲器的讀寫過程是什麼樣的
首頁 采購專區 供應專區 技術資料 環保電子 商情資訊 我的B2BIC
5.1 存儲器系統基本知識
作者: 時間: 2008-04-10 來源:
5.1.1存儲器的分類
按照存儲介質不同,可以將存儲器分為半導體存儲器、磁存儲器、激光存儲器。
這里我們只討論構成內存的半導體存儲器。
按照存儲器的存取功能不同,半導體存儲器可分為只讀存儲器(Read Only Memory簡稱ROM)和隨機存儲器(Random Access Memory簡稱RAM)
1.只讀存儲器(ROM)
ROM的特點是把信息寫入存儲器以後,能長期保存,不會因電源斷電而丟失信息。計算機在運行過程中,只能讀出只讀存儲器中的信息,不能再寫入信息。一般地,只讀存儲器用來存放固定的程序和數據,如微機的監控程序、匯編程序、用戶程序、數據表格等。根據編程方式的不同,ROM共分為以下5種:
(1)掩模工藝ROM
這種ROM是晶元製造廠根據ROM要存貯的信息,設計固定的半導體掩模版進行生產的。一旦制出成品之後,其存貯的信息即可讀出使用,但不能改變。這種ROM常用於批量生產,生產成本比較低。微型機中一些固定不變的程序或數據常採用這種ROM存貯。
(2)可一次性編程ROM(PROM)
為了使用戶能夠根據自己的需要來寫ROM,廠家生產了一種PROM。允許用戶對其進行一次編程──寫入數據或程序。一旦編程之後,信息就永久性地固定下來。用戶可以讀出和使用,但再也無法改變其內容。
(3)紫外線擦除可改寫ROM(EPROM)
可改寫ROM晶元的內容也由用戶寫入,但允許反復擦除重新寫入。EPROM是用電信號編程而用紫外線擦除的只讀存儲器晶元。在晶元外殼上方的中央有一個圓形窗口,通過這個窗口照射紫外線就可以擦除原有的信息。由於陽光中有紫外線的成分,所以程序寫好後要用不透明的標簽封窗口,以避免因陽光照射而破壞程序。EPROM的典型晶元是Intel公司的27系列產品,按存儲容量不同有多種型號,例如2716(2KB′8)、2732(4KB′8)、2764(8KB′8)、27128(16KB′8)、27256(32KB′8)等,型號名稱後的數字表示其存儲容量。
(4)電擦除可改寫ROM(EEPROM或E2PROM)
這是一種用電信號編程也用電信號擦除的ROM晶元,它可以通過讀寫操作進行逐個存儲單元讀出和寫入,且讀寫操作與RAM存儲器幾乎沒有什麼差別,所不同的只是寫入速度慢一些。但斷電後卻能保存信息。典型E2PROM晶元有28C16、28C17、2817A等。
(5)快擦寫ROM(flash ROM)
E2PROM雖然具有既可讀又可寫的特點,但寫入的速度較慢,使用起來不太方便。而flash ROM是在EPROM和E2PROM的基礎上發展起來的一種只讀存儲器,讀寫速度都很快,存取時間可達70ns,存儲容量可達16MB~128MB。這種晶元可改寫次數可從1萬次到100萬次。典型flash ROM晶元有28F256、28F516、AT89等。
2.隨機存儲器RAM(也叫讀寫存儲器)
讀寫存儲器RAM按其製造工藝又可以分為雙極型RAM和金屬氧化物RAM。
(1) 雙極型RAM
雙極型RAM的主要特點是存取時間短,通常為幾到幾十納秒(ns)。與下面提到的MOS型RAM相比,其集成度低、功耗大,而且價格也較高。因此,雙極型RAM主要用於要求存取時間短的微型計算機中。
(2) 金屬氧化物(MOS)RAM
用MOS器件構成的RAM又分為靜態讀寫存儲器(SRAM)和動態讀寫存儲器(DRAM)。
j靜態RAM(SRAM)
靜態RAM的基本存儲單元是MOS雙穩態觸發器。一個觸發器可以存儲一個二進制信息。靜態RAM的主要特點是,其存取時間為幾十到幾百納秒(ns),集成度比較高。目前經常使用的靜態存儲器每片的容量為幾KB到幾十KB。SRAM的功耗比雙極型RAM低,價格也比較便宜。
k動態RAM(DRAM)
動態RAM的存取速度與SRAM的存取速度差不多。其最大的特點是集成度特別高。其功耗比SRAM低,價格也比SRAM便宜。DRAM在使用中需特別注意的是,它是靠晶元內部的電容來存貯信息的。由於存貯在電容上的信息總是要泄漏的,所以,每隔2ms到4ms,DRAM要求對其存貯的信息刷新一次。
l集成RAM(i RAM)
集成RAM――Integrated RAM,縮寫為i RAM,這是一種帶刷新邏輯電路的DRAM。由於它自帶刷新邏輯,因而簡化與微處理器的連接電路,使用它和使用SRAM一樣方便。
m非易失性RAM(NVRAM)
非易失性RAM――Non-Volatile RAM,縮寫為NVRAM,其存儲體由SRAM和EEPROM兩部分組合而成。正常讀寫時,SRAM工作;當要保存信息時(如電源掉電),控制電路將SRAM的內容復制到EEPROM中保存。存入EEPROM中的信息又能夠恢復到SRAM中。
NVRAM既能隨機存取,又具有非易失性,適合用於需要掉電保護的場合。
5.1.2存儲器的主要性能指標
1.存貯容量
不同的存儲器晶元,其容量不一樣。通常用某一晶元有多少個存貯單元,每個存貯單元存貯若干位來表示。例如,靜態RAM6264的容量為8KB′8bit,即它有8K個單元(1K=1024),每個單元存貯8位(一個位元組)數據。
2.存取時間
存取時間即存取晶元中某一個單元的數據所需要的時間。在計算機工作時,CPU在讀寫RAM時,它所提供的讀寫時間必須比RAM晶元所需要的存取時間長。如果不能滿足這一點,微型機則無法正常工作。
3.可靠性
微型計算機要正確地運行,必然要求存儲器系統具有很高的可靠性。內存的任何錯誤就足以使計算機無法工作。而存儲器的可靠性直接與構成它的晶元有關。目前所用的半導體存儲器晶元的平均故障間隔時間(MTBF)大概是(5′106∽1′108)小時左右。
4.功耗
使用功耗低的存儲器晶元構成存儲器系統,不僅可以減少對電源容量的要求,而且還可以提高存貯系統的可靠性。
關於我們 | 網站地圖 | 推薦給朋友 | 友情鏈接 | 服務介紹 | 配套雜志 | IC庫存
E-mail:[email protected]
Copyright (c) 2003-2008 經營許可證號:冀B2 - 20060071 備案序號:冀ICP備字05001825號
Powered by POAKs 5010375
2. 資料庫存儲過程怎麼編寫
第一步:點擊資料庫下的「可編程性」,選擇「存儲過程」,點擊滑鼠右鍵,選擇「新建存儲過程」
第二步:在create PROCEDURE 後 輸入存儲過程的名字,緊跟著的就是定義存儲過程的參數,接下來就可以去編寫自己所需要組裝的存儲過程語句了
第三步: 編譯存儲過程,在工具欄上按下執行按鈕,如果沒有錯誤,就編寫成功了。
第四步:調用:在sqlserver的語句查詢框中,輸入exec 存儲過程名 參數,執行就可以了。
基本語法格式如下:中括弧帶的是可選項
create proc | procere pro_name
[{@參數數據類型} [=默認值] [output],
{@參數數據類型} [=默認值] [output],
....
]
as
begin
SQL_statements
--業務處理
end
3. C#用存儲過程把數據寫入資料庫
在資料庫里寫存儲過程 然後添加的時候連接資料庫執行這個存儲過程 create procere proc_add(@y_no char,@y_name char,@y_password varchar,@y_email varchar,@y_phone varchar,@y_sex char)
as
insert into 表名 values(@y_no,@y_name,@y_password,@y_email,@y_phone,@y_sex)
go
4. 資料庫存儲 過程怎麼寫!
/*
選擇出需要分析的數據。
添加循環費用的詳細數據時用。
*/
ALTER PROCEDURE dbo.StCycCharges
AS
-- 創建臨時表
Create Table #out(
[Id] [int], -- 不能對int類型的欄位指定寬度
[EndDate] [smalldatetime] null,
[ChargeMoney] [money] null,
[CycNo] [int]
)
-- 將數據填充到臨時表中
Insert Into #out
Select
Id, EndDate, ChargeMoney,
Case
When Cyc='Daily' Then DateDiff(d, getdate(), EndDate)
When Cyc='Weekly' Then DateDiff(ww, getdate(), EndDate)
When Cyc='Monthly' Then DateDiff(m, getdate(), EndDate)
When Cyc='Annually' Then DateDiff(yy, getdate(), EndDate)
When Cyc='bi-Annually' Then DateDiff(yy, getdate(), EndDate)/2
End As CycNo
From
TBL_Resident_ChargesList
Where
IsOnce=0 And (DateDiff(d, getdate(), EndDate)>=0)
-- 選取臨時表中的數據
Select * From #out Where Id Not In(
Select a.ListID From TBL_Resident_ChargesDetails a, #out b Where a.ListID=b.ID And a.CycNo=b.CycNo
)
-- 刪除臨時表
Drop Table #out
RETURN
5. C#如何調用存儲過程,存儲過程的功能是將數據寫入資料庫中。
SqlConnection SqlCon = new SqlConnection();
string ConnectionString = "Data Source = 123-PC\\SQLEXPRESS;Initial Catalog = EnglishWord_System;Integrated Security = True";
SqlCon.ConnectionString = ConnectionString;
SqlCon.Open();
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand();
da.SelectCommand.CommandText = "LoginSearch";
da.SelectCommand.Connection = SqlCon;
da.SelectCommand.CommandType = System.Data.CommandType.StoredProcere;
SqlParameter Param1 = new SqlParameter("@LoginId",System.Data.SqlDbType.VarChar);
SqlParameter Param2 = new SqlParameter("@Password",System.Data.SqlDbType.VarChar);
SqlParameter Param3 = new SqlParameter("@Result",System.Data.SqlDbType.Int);
Param1.Direction = System.Data.ParameterDirection.Input;
Param2.Direction = System.Data.ParameterDirection.Input;
Param3.Direction = System.Data.ParameterDirection.Output;
Param1.Value = this.LoginName.Text;
Param2.Value = this.PassWord.Password.ToString();
da.SelectCommand.Parameters.Add(Param1);
da.SelectCommand.Parameters.Add(Param2);
da.SelectCommand.Parameters.Add(Param3);
da.SelectCommand.ExecuteNonQuery();
這是我以前做的一段代碼,給你解釋一下:
先創建SqlCon的連接連接到資料庫,string ConnectionString = "Data Source = 123-PC\\SQLEXPRESS;Initial Catalog = EnglishWord_System;Integrated Security = True";也就是包含了資料庫鏈接信息的字元串,Data Source也就是你的伺服器名,這個可以在Sql登陸里看到,Initial Catalog就是你的資料庫的名字,這兩個信息最重要。
然後打開資料庫連接。
da.SelectCommand.CommandText = "LoginSearch"是進行存儲過程的選擇的,引號里的內容就是存儲過程的名稱。
da.SelectCommand.CommandType = System.Data.CommandType.StoredProcere;選擇執行的類型是存儲過程。
然後創建存儲過程中所有用到的變數,標識其數據類型,「@」里的的內容就是在sql中創建的變數的名稱。然後對變數進行方向標識,是輸入還是輸出。然後使用變數的Value屬性進行目標值的獲取。最後將這些變數全部添加到創建的命令里,也就是
da.SelectCommand.Parameters.Add(Param1);
da.SelectCommand.Parameters.Add(Param2);
da.SelectCommand.Parameters.Add(Param3);
這幾句。
最後一句是對Command進行執行,也就執行了存儲過程。
也別忘了引用
using System.Data.SqlClient;
using System.Data.Common;
這兩個命名空間
6. 資料庫的存儲過程怎麼寫
1,調用沒有參數的存儲過程
<%
set conn=server.CreateObject("adodb.connection")
set cmd=server.CreateObject("adodb.command")
strconn="dsn=pubs;uid=sa;pwd"
conn.Open strconn
set cmd.ActiveConnection=conn
cmd.CommandText="{call nono}"
'set rs=cmc.exe 或者cmd.execute
set rs=cmd.Execute()
%>
2,一個輸入的參數的存儲過程
<%
set conn=server.CreateObject("adodb.connection")
set cmd=server.CreateObject("adodb.command")
strconn="dsn=pubs;uid=sa;pwd"
conn.Open strconn
set cmd.ActiveConnection=conn
cmd.CommandText="{call oneinput(?)}"
cmd.Parameters.Append cmd.CreateParameter("@aaa",adInteger ,adParamInput )
cmd("@aaa")=100
cmd.Execute()
%>
3,一個輸入參數和一個輸出的參數
<%
set conn=server.CreateObject("adodb.connection")
set cmd=server.CreateObject("adodb.command")
strconn="dsn=pubs;uid=sa;pwd"
conn.Open strconn
set cmd.ActiveConnection=conn
cmd.CommandText = "{call oneinout(?,?)}"
cmd.Parameters.Append cmd.CreateParameter("@aaa",adInteger,adParamInput)
cmd("@aaa")=10
cmd.Parameters.Append cmd.CreateParameter("@bbb",adInteger,adParamOutput)
cmd.Execute()
bbb=cmd("@bbb")
%>
4,一個輸入參數,一個輸出參數,和一個返回值
<%
set conn=server.CreateObject("adodb.connection")
set cmd=server.CreateObject("adodb.command")
strconn="dsn=pubs;uid=sa;pwd"
conn.Open strconn
set cmd.ActiveConnection=conn
cmd.CommandText="{?=call onereturn(?,?)}"
cmd.Parameters.Append cmd.CreateParameter("@return_value",adInteger,adParamReturnValue )
cmd.Parameters.Append cmd.CreateParameter("@aaa",adInteger,adParamInput )
cmd("@aaa")=10
cmd.Parameters.Append cmd.CreateParameter("@bbb",adInteger,adParamOutput)
cmd.Execute()
bbb=cmd("@bbb")
rrr=cmd("@return_value")
%>
7. 資料庫中的存儲過程到底是什麼能不能舉個詳細的例子
存儲過程,實際就是一段寫在資料庫中的代碼。。
由於此段資料庫操作代碼由伺服器完成,而客戶端只是進行簡單的參數提交,所以,可以有效的利用伺服器的強勁而減小對客戶機的負合。
如:你想插入一條數據到資料庫。
雖然你的要求是,先檢查表裡面是否己存在該項。
如果不存在就Insert,如果存在就UPDATE。
這個時候,你就可以把這個判斷用存儲過程來寫。
你的程序只要提示你想要保存到資料庫裡面的東西即可。
下面就是一個簡單的存儲過程。
CREATE
PROCEDURE
[insert_A_Employees]
(@fWorkNo
[int],
@fWorkName
[char](10),
@fDeptName
[varchar](20),
@fGroupName
[varchar](20),
@fRecordDate
[datetime])
AS
declare
@iCount
int
select
@iCount
=
count(*)
from
A_EMPLOYEES
where
@fWorkNo
=
fWORKNO
--統計該工號在資料庫的數量賦值給
@iCount
if
@iCount
=
0
--如果資料庫中不存在該工號
begin
INSERT
INTO
[CLKQ].[dbo].[A_Employees]
--則插入數據
(
[fWorkNo],
[fWorkName],
[fDeptName],
[fGroupName],
[fRecordDate])
VALUES
(
@fWorkNo,
@fWorkName,
@fDeptName,
@fGroupName,
@fRecordDate)
return
1
--返回一個標識
end
else
begin
--否則則更新數據
update
[CLKQ].[dbo].[A_Employees]
set
[fWorkName]=@fWorkName,
[fDeptName]=@fDeptName,
[fGroupName]=@fGroupName,
[fRecordDate]=@fRecordDate
where
[fWorkNo]=@fWorkNo
return
0
--返回一個標識
end
GO
此時你只要在客戶端程序提供:
@fWorkNo
,
@fWorkName
,
@fDeptName
,
@fGroupName
,
@fRecordDate
這幾個值就行了。。
其它處理過程就由伺服器方處理了。
以上是以
SQL
資料庫為例。。。
ACCESS
等資料庫沒有此功能。
8. 把數據寫入存儲器或從存儲器中讀出數據的過程,通常稱為
雙通道內存放一起想,效果是很類似的.
要用CAD做一張圖來解釋恐怕不現實.
打個比方吧,外部傳來一組數據要存儲,00001111,比如就這8個字元,控制器就會將這些數據進行分配,如果是您說的那種雙倍的存儲(可以說成雙通道),那麼處理器回將數據平均分給兩個寫入裝置(列如磁頭)兩個寫如裝置同時進行寫入,那麼速度將會是普通情況下的兩倍.
現在有很多快閃記憶體替代傳統硬碟的想法,但是速度往往限制了該想法的實現,後來人們採用SSD快閃記憶體等許多新技術新材料,使快閃記憶體的讀寫速度和反復擦寫次數有了大大的提升,其中讀寫速度的增加採用的最多的就是多通道讀寫技術.
9. 數據入庫流程
一、規范數據入庫流程
規范化的操作流程是避免操作錯誤產生的有效手段。據此,對航空物探數據入庫過程中的數據質量檢查內容和方法進行了分析,歸納出系統檢查9項和拓撲檢查5項(表5-5)。考慮到在數據入庫過程中,需要給數據採集人員授予資料庫數據編輯和刪除許可權(以便編輯錄入的錯誤數,刪除導入的不正確數據),在編輯或刪除資料庫數據時,有可能錯誤地編輯或刪除已歸檔數據,破壞歸檔數據的完整性和正確性等因素,提出了航空物探資料庫入庫數據質量檢查的規范化流程(圖5-2)。
表5-5 入庫數據系統檢查和拓撲檢查
1)創建項目,在數據入庫前先創建項目,按項目導入或錄入數據。
2)入庫前系統檢查,導入或錄入的入庫數據必須通過系統的入庫前檢查(數據唯一性、數據類型、缺項檢查),才能保存到採集庫中。
3)數據進入採集庫後,須接受入庫後系統檢查。若是空間數據必須接受拓撲檢查,再與原數據文件進行逐位元組比較檢查,均通過後,進人工檢查。
4)人工檢查與人工復核,對項目概況數據、空間要素類數據(圖形和屬性)、文字數據、圖件數據、可製成圖件的對象類數據應進行人工檢查與人工復核。檢查方法是人工比對。該方法勞動強度大,檢查人員要有較強的責任心才能發現其中的錯誤。人工檢查與人工復核的工作內容相同,系統要求人工檢查與人工復核必須由不同人員完成,加強數據檢查力度,盡量消除人為因素造成的錯誤。
圖5-2 規范化的數據入庫流程
5)系統歸檔檢查,對入庫數據的非空欄位進行的檢查。系統歸檔檢查通過後,入庫數據可歸檔存入資料庫。
經測試,嚴格按照該數據入庫流程開展數據入庫工作。航空物探資料庫數據與入庫前原數據文件數據的一致性可達100%。
該流程將入庫數據與資料庫數據分離,單獨建立一個數據採集資料庫(簡稱「採集庫」),把待入庫數據暫存在採集庫中。入庫數據在採集庫中接受各項質量檢查和編輯,或刪除操作,直至達到數據入庫質量要求,歸檔進入資料庫(進入資料庫的數據除資料庫管理員外其他用戶是無權對其實施編輯或刪除操作的),保證資料庫數據的一致性和完整性,為整體提高航空物探資料庫的質量提供了保障。
二、規則化數據檢查方法
50多年來航空物探取得大量的基礎資料和成果資料,這些資料在地學基礎研究、油氣資源評價等領域發揮的重要作用日益顯現。人們越來越重視利用航空物探資料來解決所遇到的地質問題等,同時人們也很想了解所用資料的來源、質量等信息(如資料的測量年代、測量方法、儀器精度、飛行高度、定位精度,數據處理方法等),來評價問題解決的可信度。這也正是本信息系統建設者想要給用戶提供的。歷史已既成事實,許多與資料質量有關的信息,例如在使用數字收錄以前有不少項目的測量儀器精度、飛行高度、定位精度等現已處可尋。
過去的不足證明現在的進步,尊重歷史盡力適應未來的技術發展,是本信息系統建設所遵循的宗旨。因此,根據資料的實際情況,提出了入庫數據有效性檢查的規則化方法,較好地解決了不同年代資料信息不齊全的數據入庫質量檢查問題。
按照通常做法,在軟體代碼中直接編寫出每個資料庫表需要做檢查欄位的有效性檢查代碼。
航空物探信息系統建設
本系統採用規則化方法檢查入庫數據。在完成資料庫結構設計之後,針對每張資料庫表中每個欄位制定了入庫數據正確性的檢查規則,建立動態檢查規則表,針對不同的檢查規則編寫檢查函數,從資料庫中獲取被檢查表資料庫欄位的檢查規則,對入庫數據進行檢查的。規則化方法代碼實現的示例如下:
航空物探信息系統建設
系統檢查採用傳統檢查方法實現代碼量約15345行(表5-6),代碼開發工作量很大,且靈活性差,不利於後期代碼維護和擴展,如添加表或表添加檢查欄位後都需要對代碼進行重新修改和編譯。而本系統的規則化方法代碼量僅495行(表5-6),只有傳統檢查方法代碼的3.22%,且添加表或表添加檢查欄位後不需要修改代碼;用戶在數據入庫時,根據實際需要直接修改檢查規則表即可。
表5-6 系統檢查兩種實現方式代碼量對比表
10. 簡述存儲器讀出操作和寫入操作的工作過程(用來提交作業的,想要簡潔點),謝謝了!
進行寫操作時,假定CPU要把數據寄存器(DR)中的內容00100110,即26H寫入寄存器08H單元,即:
①CPU的地址寄存器(AR) 先把地址08H放到數據匯流排上, 經解碼器選中08H 單元;
②CPU把數據寄存器中的內容26H放到數據匯流排上;
③CPU向寄存器發送寫控制信號,在該信號的控制下,將內容08H寫入被定址的08H單元。
讀操作完成後,04H單元中的內容97H仍保持不變這種特點稱為非破壞性讀出。因此他允許多次獨處同一內容。寫入操作將破壞該單元中原來存放的內容,即由新內容26H代替了原內容,原內容被清除。