آموزش برنامه نویسی
معماری Intel Core2 در مقابل AMD Athlon 64 (قسمت 1)
نزدیک به یک سال پیش در همایش IDF 2005، اینتل رسما جایگزینی معماری NetBrust پردازنده های پنتیوم 4 خود را با معماری قدرتمند دیگری به نام Core™ اعلام کرد، این معماری جدید به تدریج به کلیه پردازنده های این شرکت از پردازنده های کامپیوترهای همراه گرفته تا پردازنده های سرورهای Xeon نفوذ خواهد کرد. از ماه آپریل سال 2001 که پردازنده های پنتیوم 4 معرفی شدند، معماری NetBrust تنها معماری پردازنده های حوزه کامپیوترهای «رویمیزی» اینتل به شمار می رفت، با وجود اینکه این معماری در مقابل معماری K8 به کار گرفته شده در پردازنده های Athlon 64 شرکت AMD (برای مطالعه بیشتر دراین مورد به سایر مقالات سایت میکرو رایانه مراجعه نمایید) ضعف های متعددی داشت، اصرار شرکت اینتل بر حکم فرمایی آن به روی پردازنده های پنتیوم 4 بخش بسیار بزرگی از بازار پردازنده ها را به شرکت AMD با معماری موفق K8 خود اهدا کرد.
معماری جدید Core™ که تا چند ماه دیگر در پردازنده های Core2 Duo و Core2 Extreme تجلی پیدا خواهد کرد، آغاز یکه تازی مجدد اینتل در بازار پردازنده ها خواهد بود. در این مقاله ابتدا ساختار CPU و معماری آن به طور ساده بیان خواهد شد سپس به بررسی نوآوری های معماری Core™ و تفاوت های آن با معماری K8 خواهیم پرداخت و در انتها عملکرد پردازنده هایCore2 را بررسی خواهیم کرد.
نسل بعدی پردازنده های اینتل
از زمان نسل اول پردازنده های اینتل که با معرفی پردازنده 8086 در سال 1978 آغاز شد تا کنون تنها مجموعه ای از دستورالعمل های آن زنده باقی مانده و هنوز در اکثر نرم افزارها از آنها استفاده می شود، هرچند نسل های جدید محدوده این دستورالعمل ها را که به نام دستورالعمل های x86 شناخته میشوند گسترده تر کردند ، اما سازگاری با دستورالعملهای نسلهای پیشین هرگز در طراحی معماری نسلهای بعدی فراموش نشد.
معماری نسل ششم پردازندههای اینتل که از «پنتیوم پرو» تا «پنتیوم III» را در برمی گرفت یکی از موفق ترین معماری های اینتل به شمار می رود، این معماری که P6 نام دارد توانست به پردازنده های اینتل آن چنان قدرتی بخشد که مدتها رقیبی برای آنها پیدا نمی شد، اما پس از آن، معماری NetBrust به کار برده شده در پردازنده های «پنتیوم 4»، دیگر نتوانست به یکه تازی های اینتل در بازار پردازنده های کامپیوترهای شخصی ادامه دهد.
معماری نسل آینده پردازنده های اینتل که Core™ نام گرفته است، آن چنان متفاوت است که شرکت اینتل تصمیم گرفته نام پردازنده هایی که از این معماری در آنها بهره برده شده دیگر «پنتیوم» نباشد، با این که پیش بینی مرگ «پنتیوم» در سیزدهمین سال حیاتش چندان دور از انتظار نبود.
لوگو و شعار جدید اینتل
نام تجاری جدیدی که از این پس بر روی کلیه پردازنده های اینتل گذاشته خواهد شد، بسیار به معماری آنها نزدیک است: Core2. تا کنون عرضه دو خانواده پردازنده های Core2 Duo برای کامپیوتر های میان قیمت و Core2 Extreme برای کامپیوترهای گرانقیمت در حوزه کامپیوترهای روی میزی قطعی شده و در ماه های آینده شاهد حضور آنها در بازار خواهیم بود، هر دو این پردازنده ها با هسته Conroe تجهیز شده اند که از پیکر بندی دوهسته بهره میبرد. در حوزه کامپیوترهای همراه نیز هسته Merom و در حوزه کامپیوترهای سرویس دهنده، هسته Woodcrest معرفی شده اند اما هنوز جزئیات دقیقی در مورد پردازنده هایی که این هسته ها در آن به کار گرفته خواهد شد داده نشده است.
شباهت بسیار زیادی میان نام پردازنده های Core2 با پردازنده های Core Duo وجود دارد، Core Duo و برادر ارزانقیمتش Core Solo نام پردازنده های مدرن حوزه کامپیوترهای همراه اینتل می باشند که بر پایه معماری P-M (نسخه تکامل یافته معماری P6) با هسته Yonah عرضه می شوند، این پردازنده های 32 بیتی هم اکنون در اکثر کامپیوترهای همراه مدرن و iMacهای جدید Apple استفاده میشوند.
چیست ؟ TAPI
یک کتابخانه استاندارد برای کار با مودم و Telephony API یا TAPI
نوشتن برنامه های تلفنی می باشد . برای نمونه می توان از برنامه های
Dialup ) شماره گیر تلفن ) ، برنامه شبکه سازی تلفنی ) Phone Dialer
برنامه تشخیص پالس مودم برای ضبط اطلاعات وارد ، ( Networking
شده از طرف کاربران و کاربردهای دیگر در این زمینه نام برد . اینکتابخانه به شما کمک کمک می کند تا بدون درگیر شدن با برنامه نویسی
سخت افزار مودم و درایور آن بطور مستقیم بتوانید برنامه های کاربردیی
در این زمینه بنویسید .
http://sheidaian.persianblog.com
http://iranmehr.bizhat.com توسط گروه ایران مھر sheidaian.persianblog برگرفتھ از سایت٨١
و چگونگی استفاده از TAPI در این سلسه مقالات سعی می کنم تا مفاهیمآنرا در ویژوال بیسیک آموزش بدهم
در ویژوال بیسیک بطور خلاصه توضیح دهم و همچنین دو مثال
پراستفاده را نیز در این زمینه بیان کنم که عبارتند از چگونگی پخش
و ساخت یک تایمر با دقت بالا : Wav فایلهای
Application مخفف API واژه : Windows API 1 - آشنایی باهای ویندوز مجموعه ای API . می باشد Programming Interface
از توابع از پیش آماده موجود در سیستم عامل هستند که شما می توانید
آنها را در برنامه های خود فراخوانی کنید . این توابع در چندین کتابخانهویندوز ذخیره شده اند . برای دسترسی به این توابع در ویژوال DLL
کنید . برای مثال : declare بیسیک ابتدا باید آنها را برنامه خود
Declare Function sndPlaySound Lib "winmm.dll" Alias
sndPlaySoundA" (ByVal lpszSoundName As String, "
Long ByVal uFlags As Long) As
sndPlaySound از تابع Declare همانطور که می بینید مثال فوق یکموجود است . کلمه Winmm.dll می باشد که این تابع در کتابخانه
دارد . سایر بخشها dll نشان می دهد که این تابع نام دیگری در Alias
مربوط به تعریف پارامترهای تابع می باشند که در مورد مثال فوق ، ایندارد . Long تابع دو پارامتر ورودی و یک خروجی از نوع
در برنامه می توانید از آن استفاده نمائید . API کردن Delare پس از
http://sheidaian.persianblog.com
http://iranmehr.bizhat.com توسط گروه ایران مھر sheidaian.persianblog برگرفتھ از سایت٢٨
استفاده Wav تابعی که برای پخش فایلهای : Wav 2 - پخش فایلهایاست که در بالا با آن آشنا شدید . sndPlaySound می شود تابع
uFlags و پارامتر Wav نام و مسیر فایل lpzSoundName پارامترچگونگی پخش فایل را مشخص می کند . مقادیر ممکن این پارامتر
عبارتند از :
پخش شود که آنرا Wav اجازه می دهد طوری فایل : SND_ASYNC -
تان را هر Wav بتوان وقفه داد . بعبارت دیگر قادر خواهید بود فایلزمان که بخواهید پخش کنید و مطمئن باشید که حتما شنیده می شود .
را بطور ممتد پخش می کند . Wav فایل : SND_LOOP -
پیدا نشود صدای دیگری Wav اگر فایل : SND_NODEFAULT -
ویندوز ) default پخش نخواهد شد ( مثلا برخی صداهایکنترل به برنامه داده نمی Wav در طول پخش فایل : SND_SYNC -
ای را در پس زمینه Wav شود . این پارامتر در زمانیکه می خواهید فایلبرنامه تان پخش کنید مناسب نمی باشد .
ای قبلا در حال پخش باشد ، فایل Wav اگر فایل : SND_NOSTOP -
شما آنرا دچار وقفه نمی کند . از این پارامتر زمانی استفاده می Wav
مان هیچوقت در وسط کار قطع نشود . Wav شود که بخواهیم فایل
Or اگر بخواهید از بیش از یکی از این پارامترها استفاده کنید توسطآنها را ترکیب نمائید مثال :
or ding.wav", SND_ASYNC\" & sndPlaySound App.path
SND_LOOP
نکته : برای استفاده از توابع صوتی پیچیده تر بایستی ازمی باشد استفاده کنید . در DirectX که یکی از اجزای DirectSound
http://sheidaian.persianblog.com
http://iranmehr.bizhat.com توسط گروه ایران مھر sheidaian.persianblog برگرفتھ از سایت٢٩
بعدا صحبت خواهم کرد . DirectSound مورد
3 - ساخت یک تایمر با دقت بالا : شاید تا بحال از کنترل تایمر موجود درنوار ابزار ویژوال بیسیک استفاده کرده باشید . این تایمر دارای دقتحدود
55 میلی ثانیه است . برای دستیابی به زمانهای با دقت بالاتر اینکنترل مفید نخواهد بود .
Kernel32.dll موجود در کتابخانه API یک GetTickCount تابعاست . این تابع طول زمانی را که سیستم شروع به کار کرده است رابرحسب میلی ثانیه برمی گرداند
:() "Private Declare Function GetTickCount Lib "kernel32
As Long
برای بررسی طی شدن یک مدت زمانی خاص شما ابتدا باید مقدار اینقرار دهید سپس در یک TempTime تابع را در یک متغیر کمکی مثلجدید و زمان
GetTickCount باید اختلاف زمان Do-Loop حلقهرا با مقدار زمانی که می خواهید سپری شود مقایسه کنید : TempTimeTempTime = GetTickCount()x
GetTickCount() - TempTime > Do While DesiredTime
'Do some things
Loop
توسط کد بالا می توان یک عملیات خاص را برای یک مدت زمانیمشخص اجرا کرد .
کد زیر نشان می دهد که چگونه می توان دستورات خاصی را در فواصل
زمانی خاص اجرار کرد :
http://sheidaian.persianblog.com
http://iranmehr.bizhat.com توسط گروه ایران مھر sheidaian.persianblog برگرفتھ از سایت٣٠
ExitFunction = False
GetTickCount()x = TempTimeDo While not(ExitFunction)x
GetTickCount() - TempTime then > If DesiredTime
'Reset the temporary variable
GetTickCount()x = TempTime'Do some things
End If
Loop
برنامه benchmark می توان برای GetTickCount همچنین از تابعها استفاده کرد . بعبارت دیگر می توان زمان اجرای یکسری دستورات
خاص را بدست آورد .
سایر عملیات کار با فایل :
استفاده می Kill 1 - حذف فایل : برای حذف یک یا چند فایل از دستورشود :
Kill "C:\Temp\MyFile.txt"x
C:\Temp\*.txt"x" Kill
2 - انتقال فایل : برای انتقال یک فایل از یک دایرکتوری به دایرکتوریاستفاده می شود . مبدا و مقصد بایستی روی یک Name دیگر از دستوردرایو باشند
. اگر دایرکتوری مبدا و مقصد یکی باشد فایل تغییر نام دادهمی شود :
C:\Temp\File1.txt" To "C:\Temp2\File2.txt"x" Name
http://sheidaian.persianblog.com
http://iranmehr.bizhat.com توسط گروه ایران مھر sheidaian.persianblog برگرفتھ از سایت٢٥
3 - کپی کردن فایل : برای کپی کردن یک فایل از یک دایرکتوری بهاستفاده می شود : FileCopy دایرکتوری دیگر از دستور
FileCopy "\File1.txt\ To "C:\Temp\File2.txt"x
4 - بدست آوردن تاریخ و زمان آخرین تغییر فایل و یا زمان ایجاد فایل :
استفاده می شود . ابتدا بایستی FileDateTime برای این کار از دستورتعریف کرده و سپس توسط این دستور Variant یک متغیر از نوع
تاریخ و زمان موردنظر را استخراج کنیم :
Variant Dim FileInfo As
FileInfo=FileDateTime("C:\Temp\MyFile.txt")x
5 - استخراج طول فایل : برای بدست آوردن طول یک فایل بر حسب بایتاستفاده می شود : FileLen از دستور
FileSize=FileLen("C:\MyFile.txt")x
SetAttr 6 - تغییر صفت یک فایل : برای تغییر صفت یک فایل از دستوراستفاده می شود . پارامترهای این دستور عبارتند از :
0 : فایل معمولی
2 : فایل مخفی
4 : فایل سیستمی
FileNumber,FileAttrib SetAttr
مقابله با خطاهای کار با فایل :
در زمان کار با فایلهای احتمال زیادی وجود دارد که خطا بوجود آید .
بنابراین بایستی در زمان کار با فایلها در صورت ممکن از روتینهای
http://sheidaian.persianblog.com
http://iranmehr.bizhat.com توسط گروه ایران مھر sheidaian.persianblog برگرفتھ از سایت٢٦
مقابله با خطا استفاده کنیم . شایع ترین خطاهای کار با فایل عبارتند از :52 : شماره یا نام فایل صحیح نیست
53 : فایل پیدا نشد
54 : حالت فایل صحیح نیست
55 : فایل قبلاً باز شده
58 : فایل از قبل وجود دارد
59 : طول رکورد صحیح نیست
61 : دیسک پر است
62 : عبور از انتهای فایل
63 : شماره رکورد صحیح نیست
70 : دسترسی ممنوع است
71 : دیسک آماده نیست
76 : مسیر پیدا نشداستفاده Select-Case در هنگام مقابله با خطا بهتراست از یک ساختار
کنید :
Err Select Case
Case 71
MsgBox "Drive is Not Ready"x
.
.
.
End Select
خواندن از فایل :
می توان Input Line و Input توسط دستورهای : Input 1 - دستورمحتوای فایلهای متنی و باینری را خواند .
به دو صورت بکار می رود : Input دستور
Filenumber,ReadData# Input
ReadData=Input(Charnum,Filenumber)x
قرار می دهد . ReadData دستور اول کل یک فایل را خوانده و در متغیر
Filenumber بایت از فایلی با شماره Charnum دستور دوم ، تعدادقرار می دهد . ReadData را خوانده و در متغیراین دو دستور تمام کاراکترهای موجود در فایل را می خوانند
. برایاستفاده Line Input اینکه بتوان فایل را خط به خط خواند ، از دستور
http://sheidaian.persianblog.com
http://iranmehr.bizhat.com توسط گروه ایران مھر sheidaian.persianblog برگرفتھ از سایت٢٢
کنید :
Filenumber,ReadData# Line Input
بیشتر برای خواندن فایلهای متنی استفاده Line Input البته از دستورمی شود زیرا ممکنست در فایل باینری هیچ کاراکتر انتهای خط (
وجود نداشته باشد و یکباره کل فایل خوانده شود . ( CRLF
از این دستور برای خواندن فایلهای باینری با : Get 2 - دستوراستفاده میشود : ( Random Access ) دسترسی تصادفی
Get #Filenumber,[Recordnum%],ReadData
را از فایلی با شماره Recordnum این دستور رکورد شمارهقرار می دهد . علامت ReadData می خواند و در متغیر Filenumber
اختیاری است و در Recordnum کروشه نشان می دهد که پارامترصورتیکه ذکر نشود داده ها از رکورد بعدی فایل ( جائیکه اشاره گر فایل
آنجا قرار دارد ) خوانده می شوند .
کار با فایل در ویژوال بیسیک - بخش اول
مقدمه
بعلت عدم وجود اشاره گر در ویژوال بیسیک عملیات کار با فایلها در آن
نسبتاً ساده می باشد .
بطور کلی فایلها بر دو نوع هستند :
این فایلها فقط شامل کاراکترهای اسکی و : Text File 1 - فایلهای متنیبرخی کاراکترهای خاص مانند انتهای خط و انتهای فایل هستند .
شامل هر نوع کاراکتری می توانند : Binary File 2 - فایلهای باینریباشند و کاربردهای گسترده ای دارند مانند بانک های اطلاعاتی ، فایلهای
اجرائی ، فایلهای گرافیکی و غیره
ویژوال بیسیک می تواند با هر دو نوع فایل کار کند .
چگونگی باز کردن فایلها
http://sheidaian.persianblog.com
http://iranmehr.bizhat.com توسط گروه ایران مھر sheidaian.persianblog برگرفتھ از سایت١٨
قبل از اینکه بتوان عملیات ورودی/خروجی را روی یک فایل انجام دادابتدا بایستی آنرا باز کرد . باز کردن فایلها در ویژوال بیسیک توسط
انجام می شود . فرمت کلی این دستور بصورت زیر است Open دستور
:
Open filename [For mode] [Access access][lock] As
filenumber [Len=reclen]x[#][ پارامترهای داخل کروشه اختیاری هستند . ]
نام فایلی است که می خواهیم آنرا باز کنیم . filename
حالت باز کردن فایل است . این حالتها عبارتند از : mode
فایل بعنوان ورودی باز می شود . : Input -
فایل بعنوان خروجی باز می شود . : Output -
فایل از نوع باینری باز می شود . : Binary -
فایل طوری باز می شود که بتوان به انتهای آن چیزی : Append -
اضافه کرد .
Random -
نوع دسترسی به فایل را مشخص می کند . انواع دسترسیها access
عبارتند از :
خواندن فایل : Read -
نوشتن در فایل : Write -
خواندن و نوشتن فایل : ReadWrite -
نوع دسترسی سایر برنامه ها به این فایل را مشخص می کند . lock
انواع دسترسیها عبارتند از :
دسترسی اشتراکی : Shared -
http://sheidaian.persianblog.com
http://iranmehr.bizhat.com توسط گروه ایران مھر sheidaian.persianblog برگرفتھ از سایت١٩
Lock Read -
Lock Write -
Lock Read Write -
عددی است که ویژوال بیسیک از آن برای دسترسی به filenumber
فایل استفاده می کند .این عدد بایستی برای هر فایل منحصر بفرد و بین
1 تا 511 باشد . برای بدست آوردن اولین شماره آزاد می توان از تابعاستفاده کرد . FreeFile
طول بافر فایل است . این عدد بایستی از 32767 کو چکتر باشد . : reclen
مشخص شده وجود نداشته و filename در صورتی که فایلی که توسطباز شده باشد Random و یا Output ،Binary ،Append فایل برای
در اینصورت یک فایل جدید با این نام ساخته می شود .
نادیده Len در صورتی که فایل بصورت باینری باز شده باشد پارامترگرفته می شود .
مجموعه توابع ریاضی در در ویژوال بیسیک دات نت وجود دارند بسیار
System.Math قویتر و کاملتر هستند . این مجموعه توابع در کلاسموجود می باشند :
برای نشان دادن پایه لگاریتم PI و E دو ثابت به اسم Math - در کلاسطبیعی و عدد پی وجود دارند .
آرک سینوس) ، ) Asin ، ( آرک کسینوس ) Acos : - توابع مثلثاتیآرک تانژانت خارج قسمت تقسیم ) Atan آرک تانژانت) ، 2 ) Atan
تانژانت ) ) Tan ، ( سینوس ) Sin ، ( کسینوس ) Cos ، ( ورودی هاحاصلضرب کامل دو ) BigMul ، ( قدرمطلق ) Abs : - توابع عمومیخارج قسمت نقسیم
) DivRem ، ( تابع سقف ) Ceiling ، ( عدد 32 بیتیباقیمانده نقسیم ) IEEERemainder ، ( تابع کف ) Floor ، ( دو عدد
http://sheidaian.persianblog.com
http://iranmehr.bizhat.com توسط گروه ایران مھر sheidaian.persianblog برگرفتھ از سایت٧
مینیمم بین دو عدد ) ، ) Min ، ( ماکزیمم بین دو عدد ) Max ، ( دو عددتابع جذر ) ) Sqrt ، ( تابع علامت ) Sign ، ( تابع گرد کردن ) Round
سینوس ) Sinh ، ( کسینوس هیپربولیک ) Cosh : - توابع هیپربولیکتانژانت هیپربولیک ) ) Tanh ، ( هیپربولیک
) Log ، ( به توان مقدار ورودی e عدد ) Exp : - توابع نمایی و لگاریتمیتابع توان ) ) Pow ، ( لگاریتم بر پایه 10 ) Log لگاریتم ) ، 10
مقدمه:
برای نوشتن برنامه های مهندسی ، محاسباتی ، گرافیکی و آماری نیاز
دارید تا از برخی توابع ریاضی استفاده نمائید . ویژوال بیسیک 6 دارایمجموعه ای از توابع است که برای انجام محاسبات عددی پیش بینی
شده اند . در این مقاله ابتدا با این توابع آشنا شده و سپس چگونگیایجاد سایر توابع ریاضی را که در میان این مجموعه وجود ندارند
خواهید دید . در پایان نیز با توابع ریاضی موجود در دات نت آشنا میشوید .
توابع ریاضی موجود در ویژوال بیسیک 6
قدرمطلق) : مقدار بدون علامت یک عدد را برمی گرداند . ) Abs - تابعاست که double آرک تانژانت) : خروجی تابع عددی از نوع ) Atn - تابع
برابر زاویه ای است که تانژانت آن عدد ورودی تابع است .
است که double کسینوس ) : خروجی تابع عددی از نوع ) Cos - تابعبرابر کسینوس زاویه ورودی است .
است که double توان نمانی) : خروجی تابع عددی از نوع ) Exp - تابعبه توان ورودی تابع است . e برابر
تابع کف یا تابع جزء صحیح) : نزدیکترین عدد صحیح ) Int - تابع
http://sheidaian.persianblog.com
http://iranmehr.bizhat.com توسط گروه ایران مھر sheidaian.persianblog برگرفتھ از سایت
تعریف نمائید :
Const Pi = 3.14159265358979
Const e = 2.71828182845904
همچنین عدد پی را می توان به صورت زیر تعریف کرد :
Pi = 4*Atn(1)
تبدیل رادیان / درجه
http://sheidaian.persianblog.com
http://iranmehr.bizhat.com توسط گروه ایران مھر sheidaian.persianblog برگرفتھ از سایت٦
چون اکثر توابع مثلثاتی بر حسب رادیان کار می کنند گاهی اوقات نیاز
داریم تا زاویا را از در جه به رادیان و بالعکس تبدیل کنیم . برای تبدیلیک زاویه که بر حسب رادیان می باشد به درجه آنرا در 180 ضرب کرده
و سپس بر عدد پی تقسیم می کنیم :
Degree(x) =x*180/Pi
برای تبدیل یک زاویه که بر حسب درجه بیان شده به رادیان آنرا در عدد
پی ضرب کرده و سپس بر 180 تقسیم می کنیم :
Rad(x) =x*Pi/180
موفقیت شما ارزوی من است