دعوی شرکت NAZOMI علیه شرکتهای WESTERN DIGITAL وSLING MEDIA
یکی از اجزای سختافزاری هر وسیله کامپیوتری، پردازشگرها هستند. دستورالعملهای مندرج در یک برنامه رایانهای توسط واحد پردازش مرکزی یا همان سیپییو خوانده و اجرا میشوند. برای اجرای یک نرم افزار توسط سیپییو، ابتدا باید برنامه از یک زبان برنامهنویسی سطح بالا که برای انسان قابل درک است(یعنی کد منبع) به یک زبان سطح پایینتر که برای ماشین قابل خواندن باشد، ترجمه شود. برنامهای که اینکار را انجام میدهد کامپایلر نام دارد. کد ماشین برای پردازشگر ویژه و منحصر به فرد است. در نتیجه یک کامپایلر خاص تنها میتواند برنامهها را برای نوع خاصی از پردازشگرها ترجمه کند. بنابراین برای اجرای یک کدمنبع یا نرمافزار بر روی سیستمهای مختلف برنامه باید برای سیستم جدید مجددا کامپایل شود.
در جاوا(Java) که یک زبان برنامهنویسی سطح بالاست این مشکل حل شده یعنی لازم نیست برای هر سیستم جدید برنامه مجددا کامپایل شود. در عوض زبان برنامهنویسی جاوا از یک کامپایلر استفاده میکند که زبان جاوا را به «بایت کد» تبدیل میکند. این بایت کدها توسط برنامهای به نام (JVM) به کد ماشین مخصوص هر پردازشگر ترجمه میشوند. در نتیجه برنامههای نوشته شده به زبان جاوا میتوانند بر روی هر سیستم عاملی به راحتی اجرا شوند. دستگاههای کامپیوتری در نحوه ذخیرهسازی اطلاعات در حافظه نیز متفاوت عمل میکنند. برخی پردازشگرها اطلاعات را به صورت پشتهای[1] یعنی به ترتیب ورود ذخیره میکنند( در واقع در این سیستم آخرین داده وارد شده اول از همه مورد استفاده و بازیابی قرار میگیرد)؛ در مقابل حافظه مبتنی بر ثبت[2]، اطلاعات را برمبنای محل دقیق هر آیتم ذخیره و بازیابی میکند. در نتیجه، پردازشگرهایی که از سیستمهای ذخیره اطلاعات متفاوتی استفاده میکنند به انواع مختلفی از کدهای ماشین نیاز دارند. با وجود آنکه پردازشگرهای مدرن اغلب از مدل مبتنی بر ثبت استفاده میکنند، بایتکد جاوا منطبق بر دستورالعمل مدل پشتهای است. بنابراین هر وسیلهای که دارای پردازشگر مبتنی بر ثبت باشد برای اجرای برنامه به زبان جاوا باید از برنامه JVM برای ترجمه بایتکدهای پشتهای جاوا استفاده کند. ایراد این روش آن است که اجرای بایتکدهای جاوا با استفاده از یک برنامه نرمافزاری(JVM) نسبت به برنامههایی که مستقیما و بدون نیاز به ترجمه برروی سختافزار اجرا میشوند، کندتر است و فرآیند اجرای برنامه بیشتر طول میکشد. یک راهحل برای این مشکل میتواند پردازش بایتکدهای جاوا در سختافزار به کمک یک نرمافزار مناسب که سرعت اجرای برنامه را بالا ببرد، باشد اما اعمال این راهحل سختافزاری برای برنامههای کاربردی که تحت زبان جاوا طراحی نشدهاند با دشواریهایی روبه روست.
موضوع پرونده حاضر دو اختراع شرکت نازومی(Nazomi) است که در پی حل مشکل مذکور بودهاند. ادعا شماره 48 و 74 ورقه اختراع شماره 362 و ادعاهای 1و5 ورقه اختراع شماره 436 سیستمی را توصیف میکنند که قادر است دستورالعملهای حافظه پشتهای را پردازش کرده و برنامههای کاربردی را نیز بدون استفاده از JVM اجرا کند. مطابق ادعانامه شماره 48: این اختراع شامل یک واحد پردازش مرکزی است که توانایی اجرای مجموعه دستورالعملهای متعدد را دارد و شامل موارد ذیل است:
یک قسمت اجرایی و فایلهای ریجستر[3] مربوط به آن، مکانیسمی برای حفظ و نگهداری برخی از اطلاعات برای مجموعه دستورالعملهای چندگانه در فایلهای ریجستر، مکانیسمی برای کنترل بستهبندی اطلاعات و مکانیسمی برای استثنا کردن برخی دستورالعملهای پشتهای. بقیه ادعاها نیز دارای عناصر مشابه با این ادعاست.
دو تن از خواندگان یعنی شرکت وسترن(Western) و اسلینگ(Sling) تولیدکننده محصولات نهایی هستند که پردازشگرهای مختلف در آنها مورد استفاده قرار میگیرد. خوانده دیگر یعنی شرکت ایآر ام(ARM) شرکت طراح پردازشگرهای مختلف است و طی قرارداد لیسانس، اجازه استفاده از این طرحها را به شرکتهای تولیدکننده تراشههای کامپیوتری اعطا میکند. در واقع شرکت ایآرام سازنده یا فروشنده پردازشگر نیست اما طرحهای ساخت پردازشگر این شرکت در بسیاری از وسایل کامپیوتری به کار رفتهاست. شرکت وسترن و اسلینگ نیز از جمله شرکتهایی بودند که از این طرحها در ساخت پردازشگرهای محصولات خود استفاده کرده بودند. در ابتدا پردازشگرهای شرکت ای آر ام تنها قادر به اجرای دو نوع از کدهای ماشین مبتنی بر دستورالعمل ثبتی بودند. علاوه بر این پردازشگرهای این شرکت میتوانستند دستورالعملهای پشتهای زبان برنامهنویسی جاوا را نیز با استفاده از روش شناخته شده شرکت نازومی(یعنی استفاده از برنامه نرمافزاری JVM که بایتکدهای جاوا را به زبان ماشین مبتنی برثبت شرکت ای آر ام ترجمه می کند) اجرا کنند. در سال 2000 شرکت ای آر ام تراشهای را طراحی کرد که سرعت پردازش بایتکدهای جاوا را افزایش میداد. قسمت سختافزاری این طرح Jazelle نامیده شد. این طرح نیز مانند سایر طرحهای ای آر ام طی قرارداد لیسانس به شرکتهای متعدد تولیدکننده تراشه واگذار شد و به دلیل انعطافپذیری آن مورد استقبال قرار گرفت.
از آنجا که طرح شرکت ای آر ام و تراشههایی که با استفاده از این طرح ساخته میشدند، قابلیت استفاده در طیف وسیعی از محصولات را داشتند معمولا دارای کارکردهای اختیاری بودند که لزوما همهی تولیدکنندگان از آنها استفاده نمیکردند. سخت افزار Jazelle یکی از قابلیتهای اختیاری این طرح بود. هر دو محصول شرکتهای وسترن و اسلینگ که به نقض حق اختراع شرکت نازومی متهم شدند، دارای سیپییوهایی بودند که سخت افزار Jazella در آنها به کار رفته بود. البته این سختافزار بدون وجود نرمافزاری به نام (Jazella Technology Enabling Kit(JTEK قابلیت اجرای عملکردهای ادعایی اختراع شرکت نازومی را ندارد. تولیدکنندگان محصولات نهایی میتوانند مجوز بهرهبردای از نرمافزار(JTEK) را در مقابل پرداخت مبلغی از شرکت ای آر ام دریافت کنند.اما خواندگان یعنی شرکتهای وسترن و اسلینگ چنین مجوزی از شرکت ای آر ام دریافت نکرده و این نرمافزار را برای فعالسازی سختافزار Jazella بر روی محصولات خود نصب نکرده بودند.
در فوریه 2010 شرکت نازومی به اتهام نقض ورقه اختراع شماره 362 و 436 علیه چندین شرکت از جمله وسترن و اسلینگ در دادگاه بخش کالیفرنیای شمالی اقامه دعوا نمود. در جولای 2012 این دو شرکت از دادگاه تقاضای رسیدگی اختصاری نمودند با این استدلال که اثبات اینکه محصولات این شرکتها به خودی خود قادر به اجرای کارکرد ادعایی است، نیازمند تفسیر ادعاهاست. به علاوه محصولات متهم به نقض، ادعاهای اختراع شرکت نازومی را نقض نکردهاند زیرا این محصولات مشتمل بر نرمافزار مورد نیاز برای اجرای سختافزار Jazelle نبودهاند. در مقابل نازومی اینطور استدلال کرد که ادعاهای 48و74 ورقه اختراع 362 و ادعاهای 1و5 ورقه اختراع 436 شامل هرنوع سختافزاری است که بتواند دستورالعملهای پشتهای را پردازش کند، صرفنظر از اینکه آیا واقعا در دستگاه چنین پردازشی صورت گرفته یا خیر. به عبارت دیگر نازومی مدعی بود که عبارات ادعاها تنها اجزای سختافزاری لازم برای عملکرد ادعایی را توصیف کردهاند و محصولات شرکتهای وسترن و اسلینگ تنها به دلیل داشتن سختافزار Jazella و حتی بدون فعالسازی توسط نرمافزار JTEK ، ناقض حقوق اختراع نازومی هستند.
در نهایت دادگاه بخش با تقاضای رسیدگی اختصاری خواندگان موافقت کرد زیرا نظر قاضی مبنی بر این بود که دستگاه ادعایی نازومی باید به خودی خود قادر به اجرای کارکرد ادعایی باشد درحالیکه بدون فعالسازی نرمافزار JTEK، سخت افزار Jazella نمیتواند دستورالعملهای پشتهای را پردازش کند و محصولات خواندگان فاقد نرمافزار لازم جهت اجرای عملکرد است. در نتیجه دادگاه محصولات دو شرکت خوانده را غیرناقض تشخیص داد. نازومی از رای دادگاه بدوی در دادگاه فدرال تقاضای تجدیدنظرخواهی نمود.
در دادگاه فدرال نخستین گام تحلیل نقض، تفسیر ادعاست. دادگاه بخش ، دعوا را چنین تفسیر کرده بود که دستگاه ادعایی مشتمل بر سخت افزار و نرم افزار بوده که قادر به ایفای عملکرد مورد بحث میباشد. دادگاه تفسیر دعوای نازومی را که صرفا مستلزم سخت افزاری بود که به قادر به ایفای عملکردهای مورد ادعا بود رد مینمود. دادگاه فدرال نیز با این نظر موافقت کرد.
ادعاهای طرح شده در مورد سی.پی.یو هایی سخن میگویند که عملکردهای خاص دارد، برای مثال میتوانند هم دستورالعملهای حافظهی مبتنی بر ثبت و هم دستورالعمل حافظهی پشتهای را تجزیه و تحلیل نماید. از آنجایی که سخت افزار بدون نرم افزار پشتیبان نمیتواند چنین عملکردی داشته باشد، تفسیر ادعاها به این شرح که ماشین، مشتمل بر سخت افزار و نرم افزار بوده صحیح بوده و حیطهی ادعا را رعایت مینماید. برای مثال ادعای شماره 48 از مکانیسمهای عمومی[4] صحبت نکرده اما مستلزم ادعاهای خاصی مانند موارد زیر است:1. محافظت از عملگرهای پشتهای [5]برای اجرای دستورالعملهای حافظهی پشتهای، و 2. تامین استثنائاتی برای دستورالعملهای خاص پشتهای.
با این وجود دادگاه معتقد است که حدود سی پی یو ادعایی تنها ناظر بر دستورالعملهای حافظهی پشتهایست.
به علاوه، نیاز به عملکرد خاص در مشخصات ورقهی اختراع شماره 362 ، در آنجا که مقرر ساخته “تسریعگر سخت افزار جاوا میتواند بایت کدهای پشتهای جاوا را به دستورالعملهای بومی حافظهی ثبتی تبدیل کند”، درج شده است. همچنین در این ورقه مشخصات، ذکر شده که تسریعگر سخت افزار جاوا میتواند “برخی از امور زیر یا تمامی آنها را انجام دهد” از جمله “مدیریت پشتهی جاوا بر فایل ثبت شده و ایجاد استثنائات دستورالعملها بر روی بایت کدهای از پیش تعیین شده” . این دو، حدود ادعانامههای 48 و 74 را باز مینمایاند.
گام دوم در تحلیل نقض تعیین این است که آیا وسیلهی خاصی که بر اساس تفسیر ادعا متهم به نقض شده، به واقع مرتکب نقض حق شده است یا خیر؟ در اینجا تردیدی نیست که سخت افزار Jazelle به صورت فیزیکی در هر دو وسیلهی متهم به نقض(مای بوک و اسلینگ باکس) وجود دارد و نیز این سخت افزار بدون نرم افزار JTEK کارامدی ندارد.به نظر میرسد این مساله، موضوع نقض حق را حل و فصل نماید.
با این وجود نازومی اشاره میکند که دادگاه پیش از این در قضیهی سیلیکون گرافیکس عنوان نموده است که اگر طراحی محصول به شکلی باشد که کاربر بتواند بدون تغییر محصول از عملکرد خاص آن استفاده کند، چنین محصولی ناقض حق است. نازومی مدعی است که نصب برنامهی JTEK اصلاح و تغییری نیست که مانع از وقوع نقض باشد. دادگاه با این استدلال مخالف است چراکه خرید و نصب این نرم افزار دقیقا تغییر و اصلاحی در محصول مورد بحث میباشد.
استدلال دوم نازومی این است که دادگاه بخش به صورت غلط سوءنیت و قصد خواندگان را برای احراز نقض لازم دانسته است. نظر دادگاه فدرال بر این است که عمل دادگاه بخش به هیچ وجه چنین معنایی نداشته است، بلکه این مرجع عنوان کرده است که اگر دستگاهی به صورتی طراحی شده که پیش از استفاده و راهاندازی، قابل تغییر یا مونتاژ باشد، میتوان تولید کننده را در صورتی که دستگاه تغییریافته یا مونتاژ شده، ناقض ورقه اختراع معتبری باشد، مسئول تلقی نمود. از این رای چنین برداشت نمیشود که محصولات متهم به نقض برای استفاده به همراه نرم افزار JTEK طراحی شده بودند. تحت چنین اوضاع و احوالی، دادگاه فدرال بر این باور نیست که طراحی دستگاه که به شیوهی ناقض حقی مورد استفاده قرار گرفته است، خود مستقیما نقض حق تلقی شود بلکه ممکن است معاونت در نقض محسوب گردد. بنابراین دادگاه فدرال رای دادگاه بدوی مبتنی بر عدم نقض را تایید نمود.
[1] Stack-based memory
[2] Register-based memory
[3] Register یا «ثبات» ناحیه کوچکی از حافظه است که برای نگهداری تکه هایی از دادهها یا اطلاعات مربوط به فعالیتهای شکل گرفته در سیستم مورد استفاده قرار میگیرد. به عنوان مثال، یک ثبات ممکن است برای نگهداری نتایج عملیات جمع یا آدرس یک محل خاص در حافظه کامپیوتر، استفاده گردد.
[4] Generic
[5] operand stack